<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><div id="myscoll"></div><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>HTML5+Css | 晚夜微雨问海棠のBlog</title><meta name="keywords" content="html,css"><meta name="author" content="晚夜微雨问海棠"><meta name="copyright" content="晚夜微雨问海棠"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="这是小生对 H5+C3基础 的一些拙见,有不对之处还望评论区留言,以便及时更正  PC端Web开发在当前页面打开链接 target&#x3D;”” 在什么地方显示  参数：  _self，默认值：当前页面显示 _blank，另外打开一个页面显示   &#96;&#96;&#96;html腾讯 123456789101112131415161718192021222324# 表格 table 的一些属性1. cellpadding">
<meta property="og:type" content="article">
<meta property="og:title" content="HTML5+Css">
<meta property="og:url" content="http://example.com/posts/98f3a6d9.html">
<meta property="og:site_name" content="晚夜微雨问海棠のBlog">
<meta property="og:description" content="这是小生对 H5+C3基础 的一些拙见,有不对之处还望评论区留言,以便及时更正  PC端Web开发在当前页面打开链接 target&#x3D;”” 在什么地方显示  参数：  _self，默认值：当前页面显示 _blank，另外打开一个页面显示   &#96;&#96;&#96;html腾讯 123456789101112131415161718192021222324# 表格 table 的一些属性1. cellpadding">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://s1.ax1x.com/2023/04/02/ppfbWQA.jpg">
<meta property="article:published_time" content="2022-11-12T03:28:51.672Z">
<meta property="article:modified_time" content="2023-04-02T14:24:17.133Z">
<meta property="article:author" content="晚夜微雨问海棠">
<meta property="article:tag" content="H5-C3">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://s1.ax1x.com/2023/04/02/ppfbWQA.jpg"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="http://example.com/posts/98f3a6d9"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//fonts.googleapis.com" crossorigin=""/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="manifest" href="/manifest.json"/><meta name="msapplication-TileColor" content="#49b1f5"/><link rel="apple-touch-icon" sizes="180x180" href="/img/siteicon/128.png"/><link rel="icon" type="image/png" sizes="32x32" href="/img/siteicon/32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/img/siteicon/16.png"/><link rel="mask-icon" href="/img/siteicon/128.png" color="#5bbad5"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium+Web&amp;display=swap" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: {"path":"/search.xml","preload":false,"languages":{"hits_empty":"找不到您查询的内容：${query}"}},
  translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"繁","msgToSimplifiedChinese":"简"},
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":150},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: true,
    post: true
  },
  runtime: '天',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: {"limitCount":650,"languages":{"author":"作者: 晚夜微雨问海棠","link":"链接: ","source":"来源: 晚夜微雨问海棠のBlog","info":"著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。"}},
  lightbox: 'fancybox',
  Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#49b1f5","bgDark":"#1f1f1f","position":"top-right"},
  source: {
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: true,
  isAnchor: true
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: 'HTML5+Css',
  isPost: true,
  isHome: false,
  isHighlightShrink: false,
  isToc: true,
  postUpdate: '2023-04-02 22:24:17'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const detectApple = () => {
      if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    })(window)</script><link rel="stylesheet" href="/css/custom.css" media="defer" onload="this.media='all'"> <link rel="stylesheet" href="/swiper/swiper.min.css"> <link rel="stylesheet" href="/swiper/swiperstyle.css"> <link rel="stylesheet" href="/css/rightMenu.css"> <link rel="stylesheet" href="/css/constrain.css"><!-- hexo injector head_end start --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Zfour/Butterfly-card-history/baiduhistory/css/main.css"><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-categories-card@1.0.0/lib/categorybar.css"><link rel="stylesheet" href="https://cdn.cbd.int/hexo-butterfly-clock-anzhiyu/lib/clock.min.css" /><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Zfour/Butterfly-double-row-display@1.00/cardlistpost.min.css"/>
<style>#recent-posts > .recent-post-item >.recent-post-info > .article-meta-wrap > .tags:before {content:"\A";
  white-space: pre;}#recent-posts > .recent-post-item >.recent-post-info > .article-meta-wrap > .tags > .article-meta__separator{display:none}</style>
<link rel="stylesheet" href="https://cdn.cbd.int/anzhiyu-blog@2.0.3/css/runtime/runtime.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.cbd.int/hexo-butterfly-swiper-anzhiyu@1.0.4/lib/swiper.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.cbd.int/hexo-butterfly-swiper-anzhiyu@1.0.4/lib/swiperstyle.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.cbd.int/hexo-butterfly-wowjs/lib/animate.min.css" media="print" onload="this.media='screen'"><link rel="stylesheet" href="https://cdn.cbd.int/hexo-butterfly-tag-plugins-plus@latest/lib/assets/font-awesome-animation.min.css" media="defer" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.cbd.int/hexo-butterfly-tag-plugins-plus@latest/lib/tag_plugins.css" media="defer" onload="this.media='all'"><script src="https://cdn.cbd.int/hexo-butterfly-tag-plugins-plus@latest/lib/assets/carousel-touch.js"></script><!-- hexo injector head_end end --><meta name="generator" content="Hexo 6.2.0"><link rel="alternate" href="/atom.xml" title="晚夜微雨问海棠のBlog" type="application/atom+xml">
</head><body><div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div class="spinner-box"><div class="configure-border-1"><div class="configure-core"></div></div><div class="configure-border-2"><div class="configure-core"></div></div><div class="loading-word">加载中...</div></div></div><div id="web_bg" style="background:url(https://s1.ax1x.com/2023/04/02/ppfbWQA.jpg);background-attachment: local;background-position: center;background-size: cover;background-repeat: no-repeat;"></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src= "" data-lazy-src="https://img2.woyaogexing.com/2022/06/28/de1ce3dc65468fd4!400x400.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">97</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">31</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">17</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/bangumis/index.html"><i class="fa-fw fas fa-home"></i><span> 追番</span></a></div><div class="menus_item"><a class="site-page" href="/comments/"><i class="fa-fw fas fa-envelope"></i><span> 留言板</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 生活馆</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" target="_blank" rel="noopener" href="http://81.69.189.243:8082/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/movies/"><i class="fa-fw fas fa-video"></i><span> 电影</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> 友情链接</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url('https://s1.ax1x.com/2023/04/02/ppfbWQA.jpg')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">晚夜微雨问海棠のBlog</a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/bangumis/index.html"><i class="fa-fw fas fa-home"></i><span> 追番</span></a></div><div class="menus_item"><a class="site-page" href="/comments/"><i class="fa-fw fas fa-envelope"></i><span> 留言板</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 归档</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 生活馆</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" target="_blank" rel="noopener" href="http://81.69.189.243:8082/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/movies/"><i class="fa-fw fas fa-video"></i><span> 电影</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> 友情链接</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">HTML5+Css</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2022-11-12T03:28:51.672Z" title="发表于 2022-11-12 11:28:51">2022-11-12</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2023-04-02T14:24:17.133Z" title="更新于 2023-04-02 22:24:17">2023-04-02</time></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-wordcount"><i class="far fa-file-word fa-fw post-meta-icon"></i><span class="post-meta-label">字数总计:</span><span class="word-count">26.5k</span><span class="post-meta-separator">|</span><i class="far fa-clock fa-fw post-meta-icon"></i><span class="post-meta-label">阅读时长:</span><span>88分钟</span></span><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title="HTML5+Css"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">阅读量:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><div class="tip warning"><p>这是小生对 H5+C3基础 的一些拙见,有不对之处还望评论区留言,以便及时更正</p>
</div>
<h1 id="PC端Web开发"><a href="#PC端Web开发" class="headerlink" title="PC端Web开发"></a>PC端Web开发</h1><h1 id="在当前页面打开链接"><a href="#在当前页面打开链接" class="headerlink" title="在当前页面打开链接"></a>在当前页面打开链接</h1><ol>
<li><p>target=”” 在什么地方显示</p>
</li>
<li><p>参数：</p>
<ul>
<li>_self，默认值：当前页面显示</li>
<li>_blank，另外打开一个页面显示</li>
</ul>
</li>
<li><p>```html<br><a href="http://www.qq.com" target="_blank">腾讯</a></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"># 表格 table 的一些属性</span><br><span class="line"></span><br><span class="line">1. cellpadding 像素值：规定单元边沿与其内容之间的空白，默认 1 像素</span><br><span class="line">2. cellspacing 像素值：规定单元格之间的空白的空隙，默认 2 像素。</span><br><span class="line"></span><br><span class="line">## 合并单元格的方式：</span><br><span class="line"></span><br><span class="line">1. 跨行合并：rowspan=“ 合并单元格的个数 ”</span><br><span class="line">2. 跨列合并：colspan=“ 合并单元格的个数 ”</span><br><span class="line">3. 代码写到目标单元格</span><br><span class="line">4. 跨行：最上册单元格为目标单元格，写合并代码</span><br><span class="line">5. 跨列：最左侧单元格为目标单元格，写合并代码</span><br><span class="line"></span><br><span class="line"># 表单元素</span><br><span class="line"></span><br><span class="line">## input 输入表单元素</span><br><span class="line"></span><br><span class="line">### 重置按钮</span><br><span class="line"></span><br><span class="line">1. reset 重置按钮，清空表单填写的数据</span><br><span class="line"></span><br><span class="line">2. ```html</span><br><span class="line">   &lt;input type=&quot;reset&quot; value=&quot;重置&quot;&gt;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h3 id="上传按钮"><a href="#上传按钮" class="headerlink" title="上传按钮"></a>上传按钮</h3><ol>
<li><p>file 选择文件</p>
</li>
<li><p>```html<br><input type="file"></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">### label 标签</span><br><span class="line"></span><br><span class="line">1. &lt;label&gt; 标签为 input 元素定义标注（标签）</span><br><span class="line"></span><br><span class="line">2. &lt;label&gt; 标签用于绑定一个表单元素，当点击&lt;lable&gt; 标签内的文本时，浏览器就会自动将焦点（光标）转到或者选择对应的表单元素上，用来增加用户的体验</span><br><span class="line"></span><br><span class="line">3. 语法：</span><br><span class="line"></span><br><span class="line">   - ```html</span><br><span class="line">     &lt;label for=&quot;sex&quot;&gt;男&lt;/label&gt;</span><br><span class="line">     &lt;input type=&quot;radio&quot; name=&quot;sex&quot; id=&quot;sex&quot;&gt;</span><br></pre></td></tr></table></figure>
<ul>
<li>通过 id 和 for 建立 label 和 input 的联系，属性名要相同</li>
</ul>
</li>
</ol>
<h2 id="select-下拉表单元素"><a href="#select-下拉表单元素" class="headerlink" title="select 下拉表单元素"></a>select 下拉表单元素</h2><ol>
<li><p>语法：</p>
</li>
<li><p>```html<br><select></p>
<pre><code>&lt;option&gt;选项1&lt;/option&gt;
&lt;option&gt;选项2&lt;/option&gt;
&lt;!-- 默认选中 --&gt;
&lt;option selected=&quot;selected&quot;&gt;选项3&lt;/option&gt;
....
</code></pre><p>&lt;/select&gt;</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">3. `&lt;select&gt;` 中 至少包含一对 `&lt;option&gt;`</span><br><span class="line"></span><br><span class="line">4. 在`&lt;option&gt;`中定义selected=&quot;selected&quot;时，当前项即为默认选中项</span><br><span class="line"></span><br><span class="line">## textarea 文本域元素</span><br><span class="line"></span><br><span class="line">1. 语法：</span><br><span class="line"></span><br><span class="line">2. ```html</span><br><span class="line">   &lt;textarea rows=&quot;3&quot; cols=&quot;20&quot;&gt; 文本内容&lt;/textarea&gt;</span><br></pre></td></tr></table></figure>
</li>
<li><p>cols=“每行中的字符数”  ， rows=“显示的行数”，在实际开发中，都是用 css 来控制大小的</p>
</li>
</ol>
<h1 id="Css"><a href="#Css" class="headerlink" title="Css"></a>Css</h1><h2 id="字体"><a href="#字体" class="headerlink" title="字体"></a>字体</h2><ol>
<li>font-family:’宋体’</li>
<li>font-weight:700  加粗 ， 700 默认的 字体粗细 400 文字不加粗</li>
<li>复合形式<ul>
<li>font：font-style font-weight font-size font-family 顺序不能乱</li>
<li>使用font 属性时，必须按上面的格式中顺序书写，不能更换顺序，并且各个属性可以空格隔开</li>
<li>不需要设置的属性可以省略（取默认值），但必须保留 font-size 和 font-family属性，否则font属性将不起作用</li>
<li>例如：font：20px ‘黑体’；</li>
</ul>
</li>
</ol>
<h2 id="文本修饰"><a href="#文本修饰" class="headerlink" title="文本修饰"></a>文本修饰</h2><ol>
<li>text-decoration</li>
<li>属性：<ul>
<li>none：默认。没有装饰线（最常用）</li>
<li>underline：下划线。链接 a 自带 下划线（常用）</li>
<li>overline：上划线（几乎不用）</li>
<li>line-through：删除线（不常用）</li>
</ul>
</li>
</ol>
<h3 id="文本缩进"><a href="#文本缩进" class="headerlink" title="文本缩进"></a>文本缩进</h3><ol>
<li>text-indent 属性用来指定文本的第一行缩进，通常是将段落的首行缩进</li>
<li>单位：em</li>
<li>是一个相对单位，就是当前元素（font-size）1个文字的大小，如果当前元素没有设置大小，则会按照父元素的 1 个文字大小</li>
</ol>
<h2 id="行间距"><a href="#行间距" class="headerlink" title="行间距"></a>行间距</h2><ol>
<li>line-height 属性用于设置行间距（行高）。可以控制文字与行之间的距离</li>
</ol>
<h2 id="复合选择器"><a href="#复合选择器" class="headerlink" title="复合选择器"></a>复合选择器</h2><h3 id="后代选择器"><a href="#后代选择器" class="headerlink" title="后代选择器"></a>后代选择器</h3><ol>
<li>后代选择器又称为 包含选择器，可以选择父元素里面子元素，中间用空格分隔</li>
<li>语法：元素1 元素2{ 样式 }</li>
<li>元素1 是父级，元素2 是子级，最终操作的是元素2 的样式</li>
</ol>
<h3 id="子选择器"><a href="#子选择器" class="headerlink" title="子选择器"></a>子选择器</h3><ol>
<li>子元素选择器（子选择器）只能选择作为某元素的<code>最近一级</code> 子元素，简单理解就是<code>亲儿子</code>元素</li>
<li>语法：元素1&gt;元素2{ 样式 }</li>
<li>元素1 和 元素2 中间用 <code>大于号</code> 隔开</li>
<li>元素1 是 父级，元素2 是子级，最终选择的是元素2</li>
<li>元素2 必须是<code>亲儿子</code> ,其孙子，重孙之类都不归他管</li>
</ol>
<h3 id="并集选择器"><a href="#并集选择器" class="headerlink" title="并集选择器"></a>并集选择器</h3><ol>
<li>并集选择器可以选择多组标签，同时为他们定义相同的样式，通常用于集体声明</li>
<li>并集选择器是各选择器通过英文逗号（,）链接而成，任何形式的选择器都可以作为并集选择器的一部分</li>
<li>语法：元素1，元素2{ 样式 }</li>
<li>例如：ul,div{ 样式 }</li>
<li>元素1 和 元素2 中间用逗号隔开</li>
<li>逗号可以理解为和的意思</li>
<li>并集选择器通常用于集体声明</li>
</ol>
<h3 id="伪类选择器"><a href="#伪类选择器" class="headerlink" title="伪类选择器"></a>伪类选择器</h3><ol>
<li>伪类选择器用于向某些选择器添加特殊效果，比如给链接添加特殊效果，或选择第 1 个，或第 n 个元素</li>
<li>伪类选择器 用 冒号：表示，比如 ：hove、：first-child</li>
<li>未来选择器很多，比如有链接伪类、结构伪类等</li>
</ol>
<h4 id="链接伪类"><a href="#链接伪类" class="headerlink" title="链接伪类"></a>链接伪类</h4><ol>
<li>a：link 选择所有未被访问过的链接</li>
<li>a：visited 选择所有以访问过的链接</li>
<li>a：hover 选择鼠标指针位于其上的链接</li>
<li>a：active 选择活动链接（鼠标按下未弹起的链接）</li>
<li>注意事项：<ol>
<li>为了确保生效，请按照 lvha 的顺序声明 ，否则可能不生效</li>
<li>：link、：visited、：hover、：active</li>
<li>记忆法：love hate 或者 lv 包包 ha 好</li>
<li>因为 a 链接在浏览器中具有默认样式，所以我们实际工作中都需要给链接单独指定样式</li>
</ol>
</li>
</ol>
<h4 id="focus-焦点选择器"><a href="#focus-焦点选择器" class="headerlink" title="focus 焦点选择器"></a>focus 焦点选择器</h4><ol>
<li><p>：focus 未来选择器用于选取获得焦点的表单元素</p>
</li>
<li><p>焦点就是光标、一般情况<input>类表单元素才能获取，因此这个选择器也主要针对表单元素来说</p>
</li>
<li><p>```css<br>input：focus{</p>
<pre><code>background-color：yellow；
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">## 元素的显示模式</span><br><span class="line"></span><br><span class="line">### 什么是元素的显示模式</span><br><span class="line"></span><br><span class="line">1. 作用：网页的标签非常多，在不同的地方会用到不同类型的标签，了解他们的特点可以更好的布局</span><br><span class="line">2. 元素的显示模式就是元素（标签）以什么方式进行显示，比如&lt;div&gt; 自己占一行，比如一行可以放多个&lt;span&gt;</span><br><span class="line">   1. HTML 元素一般分为 `块元素` 和 `行元素` 就像 `男人` 和 `女人` 的区别一样</span><br><span class="line"></span><br><span class="line">### 元素显示模式的分类</span><br><span class="line"></span><br><span class="line">#### 块元素</span><br><span class="line"></span><br><span class="line">1. 常见的块元素有`&lt;h1&gt;~&lt;h6&gt;` 、`&lt;p&gt;` 、`&lt;div&gt;` 、`&lt;ul&gt;` 、`&lt;ol&gt;` `&lt;li&gt;` 等，其中`&lt;div&gt;` 标签是常见的块元素</span><br><span class="line">2. 块元素的特点：</span><br><span class="line">   1. 比较霸道，自己独占一行</span><br><span class="line">   2. 高度、宽度、外边距、以及内边距都可以控制</span><br><span class="line">   3. 宽度默认是容器（父级宽度）的100%。</span><br><span class="line">   4. 是一个容器及盒子，里面可以放行内及盒子</span><br><span class="line">   5. 注意：</span><br><span class="line">      - 文字类的元素不能使用块级元素</span><br><span class="line">        - `&lt;p&gt;` 标签主要用于存放文字，因此`&lt;p&gt;` 里面不能放块级元素，特别是不能放`&lt;div&gt;`</span><br><span class="line">        - 同理，`&lt;h1&gt;~&lt;h6&gt;` 等都是文字类块级标签，里面也不能放其他块级元素</span><br><span class="line"></span><br><span class="line">#### 行内元素</span><br><span class="line"></span><br><span class="line">1. 常见的行内元素有`&lt;a&gt;` 、`&lt;strong&gt;` 、`&lt;b&gt;` 、`&lt;em&gt;` 、`&lt;i&gt;` 、`&lt;del&gt;` 、`&lt;s&gt;` 、`&lt;ins&gt;` 、`&lt;u&gt;` 、`&lt;span&gt;` 等，其中`&lt;span&gt;` 标签是最典型的行内元素，有的地方也将行内元素，称为内联元素</span><br><span class="line">2. 行内元素的特点：</span><br><span class="line">   1. 相邻行内元素在一行上，一行可以显示多个</span><br><span class="line">   2. 高、宽直接设置是无效的</span><br><span class="line">   3. 默认宽度就是它本身内容的宽度</span><br><span class="line">   4. 行内元素只能容纳文本或其他行内元素</span><br><span class="line">   5. 注意:</span><br><span class="line">      - 链接里面不能在放链接</span><br><span class="line">      - 特殊情况链接&lt;a&gt; 里面可以放块级元素，但是给&lt;a&gt; 转换一下块级模式最安全</span><br><span class="line"></span><br><span class="line">#### 行内块元素</span><br><span class="line"></span><br><span class="line">1. 在行内元素中有几个特殊的标签----`&lt;img /&gt;` 、`&lt;input /&gt;` 、`&lt;td&gt;` 、他们同时具有块元素和行内元素的特点。</span><br><span class="line">2. 有些资料称他们为行内块元素</span><br><span class="line">3. 行内块元素的特点：</span><br><span class="line">   - 和相邻行内元素（行内块）在一行上，但是他们之间会有空白缝隙。一行可以显示多个（行内元素特点）</span><br><span class="line">   - 默认宽度就是它本身内容的宽度（行内元素特点）</span><br><span class="line">   - 高度、行高、外边距一级内边距都可以控制（块级元素的特点）</span><br><span class="line"></span><br><span class="line">#### 元素显示模式总结</span><br><span class="line"></span><br><span class="line">| 1.         | 元素模式               | 元素排列               | 设置样式         | 默认宽度                 | 包含 |</span><br><span class="line">| ---------- | ---------------------- | ---------------------- | ---------------- | ------------------------ |</span><br><span class="line">| 块级元素   | 一行只能放一个块级元素 | 可以设置宽度高度       | 容器100%         | 容器级可以包含任何标签   |</span><br><span class="line">| 行内元素   | 一行可以放多个行内元素 | 不可以直接设置宽度高度 | 它本身内容的宽度 | 容纳文本或者其他行内元素 |</span><br><span class="line">| 行内块元素 | 一行放多个行内块元素   | 可以设置宽度和高度     | 它本身内容的宽度 |                          |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">2. 他们之间的关系，可以理解为男人女人和人妖之间的关系</span><br><span class="line"></span><br><span class="line">### 元素显示模式的转换</span><br><span class="line"></span><br><span class="line">1. 特殊情况下，我们需要元素模式的转换，简单理解：一个模式的元素，需要另外一个元素的特性，比如想要增加链接`&lt;a&gt;` 的触发范围</span><br><span class="line">2. a本身为行元素，不能直接设置宽高，但是需求是要宽高</span><br><span class="line"></span><br><span class="line">#### 转换为块级元素</span><br><span class="line"></span><br><span class="line">1. display：block；意为：显示为块级</span><br><span class="line"></span><br><span class="line">#### 转换为行内元素</span><br><span class="line"></span><br><span class="line">1. display：inline；意为：显示模式为行内</span><br><span class="line"></span><br><span class="line">#### 转换为行内块元素</span><br><span class="line"></span><br><span class="line">1. display：inline-block；意为：显示模式为行内块元素</span><br><span class="line"></span><br><span class="line">#### 单行文字垂直居中原理</span><br><span class="line"></span><br><span class="line">1. 行高=&gt;文字本身高度 + 上空隙 + 下空隙</span><br><span class="line">2. 盒子高度 = 文字行高 就实现 单行文字垂直居中了</span><br><span class="line">   1. 简单理解：行高的上空隙和下空隙吧文字挤到中间了，</span><br><span class="line">   2. 如果行高小于盒子高度，文字偏上</span><br><span class="line">   3. 如果行高大于盒子高度，文字偏下</span><br><span class="line"></span><br><span class="line">## CSS的背景</span><br><span class="line"></span><br><span class="line">1. 通过 CSS背景属性，可以给页面元素添加背景样式</span><br><span class="line">2. 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等</span><br><span class="line"></span><br><span class="line">### 背景颜色</span><br><span class="line"></span><br><span class="line">1. background-color 属性定义了元素的背景颜色</span><br><span class="line"></span><br><span class="line">2. ```css</span><br><span class="line">   background-color: transparent| 颜色值</span><br></pre></td></tr></table></figure>
</li>
<li><p>transparent：背景色透明</p>
</li>
<li><p>color：指定颜色。</p>
</li>
<li><p>一般情况下元素背景颜色默认值是 <code>transparent</code> (透明)</p>
</li>
</ol>
<h3 id="背景图片"><a href="#背景图片" class="headerlink" title="背景图片"></a>背景图片</h3><ol>
<li><p>background-image 属性描述了元素的背景图像，实际开发常见于logo，或者一些装饰性的小图片，或者超大的背景图片，优点是非常便于控制（精灵图也是一种运用场景）</p>
</li>
<li><p>```css<br>background-image:none | url(url)</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">3. 参数：</span><br><span class="line"></span><br><span class="line">4. none：无背景图</span><br><span class="line"></span><br><span class="line">5. url：使用绝对或相对地址指定背景图像</span><br><span class="line"></span><br><span class="line">### 背景平铺</span><br><span class="line"></span><br><span class="line">1. 如果需要在 HTML 页面上对背景图像进行平铺，可以使用 background-repeat属性</span><br><span class="line"></span><br><span class="line">2. ```css</span><br><span class="line">   background-repeat:repeat | no-repeat | repeat-x | repeat-y</span><br></pre></td></tr></table></figure>
</li>
<li><p>参数：</p>
</li>
<li><p>repeat：背景图像在纵向和横向上平铺</p>
</li>
<li><p>no-repeat：背景图像不平铺</p>
</li>
<li><p>repeat-x：背景图像在横向上平铺</p>
</li>
<li><p>repeat-y：背景图像在纵向平铺</p>
</li>
</ol>
<h3 id="背景图片位置"><a href="#背景图片位置" class="headerlink" title="背景图片位置"></a>背景图片位置</h3><ol>
<li><p>利用 background-position属性可以改变图片在背景中的位置</p>
</li>
<li><p>```css<br>background-position:x y<br>background-position:center top; /<em> 在 居中靠上显示 </em>/</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">3. 参数代表的意思是：x 坐标 y 坐标，可以用方位名词或者精准单位</span><br><span class="line"></span><br><span class="line">| 4.       | 参数值                                                      | 说明 |</span><br><span class="line">| -------- | ----------------------------------------------------------- |</span><br><span class="line">| length   | 百分数 \| 由浮点数字和单位标识符组成的长度值                |</span><br><span class="line">| position | top \| center \| bottom \| left \| center \| right 方位名词 |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">5. 参数是方位名词：</span><br><span class="line"></span><br><span class="line">   - 如果指定的两个值都是方位名词，则两个值前后顺序无关，比如 left top 和 top left 效果一致</span><br><span class="line">   - 如果只指定了一个方位名词，另一个值省略，则第二个值默认居中对齐</span><br><span class="line"></span><br><span class="line">6. 参数是精确单位</span><br><span class="line"></span><br><span class="line">   - 如果参数值是精确坐标， 那么第一个肯定是 x 坐标，第二个一定 y 坐标</span><br><span class="line">   - 如果只指定一个数值，那该数值一定是 x 坐标，另一个垂直居中</span><br><span class="line"></span><br><span class="line">7. 参数是混合单位</span><br><span class="line"></span><br><span class="line">   - 如果指定的两个值是精确单位，和方位名词混合使用，则第一个值是 x 坐标，第二个值是 y 坐标</span><br><span class="line"></span><br><span class="line">### 背景图像固定（背景附着）</span><br><span class="line"></span><br><span class="line">1. background-attachment 属性设置背景图像是否固定或者随着页面的其余部分滚动</span><br><span class="line"></span><br><span class="line">2. ```css</span><br><span class="line">   background-attachment:scroll | fixed</span><br></pre></td></tr></table></figure>
</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>3.</th>
<th>参数</th>
<th>作用</th>
</tr>
</thead>
<tbody>
<tr>
<td>scroll</td>
<td>背景图像是随对象内容滚动</td>
</tr>
<tr>
<td>fixed</td>
<td>背景图像固定</td>
</tr>
</tbody>
</table>
</div>
<h3 id="背景复合写法"><a href="#背景复合写法" class="headerlink" title="背景复合写法"></a>背景复合写法</h3><ol>
<li>为了简化背景属性代码，可简写在同一个 background 属性中</li>
<li>默认顺序：</li>
<li>background：背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置 ；</li>
<li>更提倡 背景 复合写法，中间用空格隔开</li>
</ol>
<h3 id="背景色半透明"><a href="#背景色半透明" class="headerlink" title="背景色半透明"></a>背景色半透明</h3><ol>
<li><p>```css<br>background:rgba(0,0,0,0.3);</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">2. 最后一个参数是 alpha 透明度，取值范围在0~1之间</span><br><span class="line"></span><br><span class="line">3. 习惯吧 0.3 的 0 省略掉，写为  background:rgba(0,0,0,.3);</span><br><span class="line"></span><br><span class="line">4. 注意:半透明指的是背景半透明，内容不会改变</span><br><span class="line"></span><br><span class="line">## CSS 的三大特性</span><br><span class="line"></span><br><span class="line">1. 层叠性、继承性、优先级</span><br><span class="line"></span><br><span class="line">### 层叠性</span><br><span class="line"></span><br><span class="line">1. 相同选择器给设置相同的样式，此时一个样式就会覆盖（层叠）另一个冲突的样式，层叠性主要解决样式冲突的问题</span><br><span class="line">2. 层叠性原则：</span><br><span class="line">   - 样式冲突，遵循的原则是就近原则，那个样式离结构近，就执行那个样式</span><br><span class="line">   - 样式不冲突，不会层叠</span><br><span class="line"></span><br><span class="line">### 继承性</span><br><span class="line"></span><br><span class="line">1. 现实中继承：我们继承了父亲的行</span><br><span class="line">2. CSS 中的继承：子标签会继承父标签的某些样式，如文本颜色和字号，简单的理解就是：子承父业</span><br><span class="line">3. 恰当地使用继承可以简化代码，降低CSS 的复杂性</span><br><span class="line">4. 子元素可以继承父元素的样式（text-，font-，line-这些元素开头的继承，以及color属性）</span><br><span class="line"></span><br><span class="line">#### 行高的继承性</span><br><span class="line"></span><br><span class="line">1. ```css</span><br><span class="line">   body &#123;</span><br><span class="line">       font:12px/1.5 Microsoft YaHei;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
<li><p>行高可以跟单位也可以不跟单位</p>
</li>
<li><p>如果子元素没有设置行高，则会继承父元素的行高的1.5倍</p>
</li>
<li><p>此时子元素的行高是：当前子元素的文字大小的 *1.5</p>
</li>
<li><p>body 行高 1.5 这样写法最大的优势就是里面子元素可以根据自己文字大小自动调整行高</p>
</li>
</ol>
<h3 id="优先级"><a href="#优先级" class="headerlink" title="优先级"></a>优先级</h3><ol>
<li><p>当同一个元素指定过个选择器，就会有优先级的产生</p>
</li>
<li><p>选择器相同，则执行层叠性</p>
</li>
<li><p>选择器不同，则根据选择器权重执行</p>
</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>4.</th>
<th>选择器</th>
<th>选择器权重</th>
</tr>
</thead>
<tbody>
<tr>
<td>继承 或者  *</td>
<td>0,0,0,0</td>
</tr>
<tr>
<td>元素选择器</td>
<td>0,0,0,1</td>
</tr>
<tr>
<td>类选择器，伪类选择器</td>
<td>0,0,1,0</td>
</tr>
<tr>
<td>ID选择器</td>
<td>0,1,0,0</td>
</tr>
<tr>
<td>行内样式 style=“”</td>
<td>1,0,0,0</td>
</tr>
<tr>
<td>!important 重要的</td>
<td>∞ 无穷大</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><p>优先级注意点:</p>
<ul>
<li>权重是有 4 组数字组成，但是不会有进位</li>
<li>可以理解为类选择器永远大于元素选择器，id选择器永远大于类选择器，以此类推..</li>
<li>等级判断从左向右，如果某一位数值相同，则判断下一位数值</li>
<li>继承的权重为0，如果该元素没有直接选中，不管父元素权重多高，子元素得到的权重永远为0</li>
<li>a 链接浏览器默认指定了一个样式，蓝色有下划线， 此时浏览器指定的权重最高，除非层叠性，覆盖了浏览器的样式</li>
</ul>
</li>
</ol>
<h4 id="权重叠加"><a href="#权重叠加" class="headerlink" title="权重叠加"></a>权重叠加</h4><ol>
<li>如果是符合选择器，则会有权重叠加，需要计算权重</li>
<li>权重虽然会叠加，但是不会有进位的问题</li>
</ol>
<h2 id="盒子模型"><a href="#盒子模型" class="headerlink" title="盒子模型"></a>盒子模型</h2><h3 id="盒子模型-1"><a href="#盒子模型-1" class="headerlink" title="盒子模型"></a>盒子模型</h3><h4 id="盒子简介"><a href="#盒子简介" class="headerlink" title="盒子简介"></a>盒子简介</h4><ol>
<li>页面布局要学习的三大核心，盒子模型，浮动，定位，学好盒子模型能帮助页面布局</li>
<li>网页布局的本质<ol>
<li>先准备好相关的网页元素，网页元素基本都是盒子 Box</li>
<li>利用 CSS 设置好盒子样式，然后摆放到相应的位置</li>
<li>往盒子里面装内容</li>
<li>核心本质：就是利用 css 摆盒子</li>
</ol>
</li>
</ol>
<h4 id="盒子组成"><a href="#盒子组成" class="headerlink" title="盒子组成"></a>盒子组成</h4><ol>
<li>所谓盒子：就是吧 HTML 页面中的布局元素看作是一个矩形的盒子，也就是一个盛装内容的容器</li>
<li>CSS 盒子模型本质上是一个盒子，封装周围的 HTML 元素，它包括：边框、外边距、内边距、和实际内容</li>
<li>border 边框、content 内容、padding 内边距、margin 外边距</li>
</ol>
<h5 id="border-边框"><a href="#border-边框" class="headerlink" title="border 边框"></a>border 边框</h5><ol>
<li><p>border 可以设置元素边框，边框有三部分组成，边框宽度（粗细）边框样式，边框颜色</p>
</li>
<li><p>```css<br>border:border-width || border-style || border-color</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">| 3.           | 属性                   | 作用 |</span><br><span class="line">| ------------ | ---------------------- |</span><br><span class="line">| border       | 定义边框粗细，单位是px |</span><br><span class="line">| border-style | 边框的样式             |</span><br><span class="line">| border-color | 边框颜色               |</span><br><span class="line"></span><br><span class="line">4. 简写：border:1px solid red ;没有顺序</span><br><span class="line"></span><br><span class="line">###### border-style</span><br><span class="line"></span><br><span class="line">1. ```css</span><br><span class="line">   border-style:none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset</span><br></pre></td></tr></table></figure>
</li>
<li><p>参数：</p>
<ol>
<li>none：无边框。与任何指定的 border-width 值 无关</li>
<li>hidden：隐藏边框。IE 不支持</li>
<li>dotted：在 MAC 平台上 IE4 + 与 Windows 和 Unix 平台上 IE5.5+ 为点线，否则 为实线</li>
<li>dashed：在 MAC 平台上 IE4+ 与 Windows 和 Unix 平台上 IE5.5+ 为虚线，否则为实线</li>
<li>solid：实线</li>
<li>double：双线边框，两条单线与其间隔的和等于指定的 border-width 值</li>
<li>groove：根据 border-color 的值画 3D 凹槽</li>
<li>ridge：根据 border-color 的值 画菱形边框</li>
<li>inset：根据 border-color 的值画 3D 凹边</li>
<li>outset：根据 border-color 的值画 3D 凸边</li>
</ol>
</li>
</ol>
<h6 id="边框分开写法："><a href="#边框分开写法：" class="headerlink" title="边框分开写法："></a>边框分开写法：</h6><ol>
<li><p>```css<br>border-top:1px solid red; /<em> 只设定上边框，其余同理 </em>/</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">###### 表格的细线边框</span><br><span class="line"></span><br><span class="line">1. ```css</span><br><span class="line">   border-collapse 属性控制浏览器绘制表格边框的方式，它控制相邻单元格的边框</span><br></pre></td></tr></table></figure>
</li>
<li><p>collapse 单词是合并的意思</p>
</li>
<li><p>border-collapse：collapse；相邻边框合并在一起</p>
</li>
</ol>
<h5 id="内边距"><a href="#内边距" class="headerlink" title="内边距"></a>内边距</h5><ol>
<li><p>padding 属性用于设置内边距，即边框与内容之间的距离</p>
</li>
<li><p>内容和边框有了距离，添加了内边距</p>
</li>
<li><p>padding 影响了盒子实际大小</p>
</li>
<li><p>如果盒子已经有了宽度和高度，此时在指定内边框，会撑大盒子</p>
</li>
<li><p>解决方案：</p>
</li>
<li><p>如果保证盒子跟效果图大小保持一致，则让 width/height减去多出来的内边距大小即可</p>
</li>
<li><p>如果盒子本身没有指定 width 、 height属性，则此时 padding 不会撑开盒子大小</p>
</li>
<li><p>如果孩子和父亲一样宽，则不指定宽度，</p>
</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>9.</th>
<th>属性</th>
<th>作用</th>
</tr>
</thead>
<tbody>
<tr>
<td>padding-left</td>
<td>左内边距</td>
</tr>
<tr>
<td>padding-right</td>
<td>右内边距</td>
</tr>
<tr>
<td>padding-top</td>
<td>上内边距</td>
</tr>
<tr>
<td>padding-bottom</td>
<td>下内边距</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><p>简写：</p>
<p>| 1.                          | 值的个数                                                    | 表达意思 |<br>| —————————————- | —————————————————————————————- |<br>| padding：5px；              | 1个值，代表上下左右都有5 像素内边距                         |<br>| padding：5px 10px；         | 2个值代表上下内边距是5像素，左右内边距是10像素              |<br>| padding：5px 10px 20px；    | 3个值，代表上内边距5像素，左右内边距10像素 ，下内边距20像素 |<br>| padding：5px 10px 20px 30px | 4个值，上是5像素，右10像素 ，下 20 像素，左是30像素，顺时针 |</p>
</li>
</ol>
<h5 id="外边距"><a href="#外边距" class="headerlink" title="外边距"></a>外边距</h5><ol>
<li>margin 属性用于设置外边距，即控制盒子和盒子之间的距离</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>属性</th>
<th>作用</th>
</tr>
</thead>
<tbody>
<tr>
<td>margin-left</td>
<td>左外边距</td>
</tr>
<tr>
<td>margin-right</td>
<td>右外边距</td>
</tr>
<tr>
<td>margin-top</td>
<td>上外边距</td>
</tr>
<tr>
<td>margin-bottom</td>
<td>下外边距</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><p>margin 简写方式代表的意义跟 padding 完全一致</p>
</li>
<li><p>外边距可以让块级盒子水平居中，但是必须满足两个条件：</p>
<ol>
<li><p>盒子必须指定了宽度（width）</p>
</li>
<li><p>盒子左右的外边距都设置为 auto</p>
</li>
<li><p>```css<br>.header{</p>
<pre><code>width:960px;
margin:0 auto;
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">   4. 常见写法，有以下三种</span><br><span class="line"></span><br><span class="line">      1. margin-left:auto; margin-right:auto;</span><br><span class="line">      2. margin:auto;</span><br><span class="line">      3. margin:0 auto;</span><br><span class="line"></span><br><span class="line">   5. 注意：以上方法是让块级元素水平居中，行内元素或者行内块元素水平居中给其父亲添加 text-align：center 即可</span><br><span class="line"></span><br><span class="line">5. 使用 margin 定义块元素的垂直外边距时，可能会出现外边距的合并</span><br><span class="line"></span><br><span class="line">6. 嵌套块元素垂直外边距的塌陷</span><br><span class="line"></span><br><span class="line">   1. 对于两个嵌套关系（父子关系）的块元素，父元素有上外边距，此时父元素会塌陷较大的外边距值</span><br><span class="line">   2. 解决方案：</span><br><span class="line">      - 可以为父元素定义上边距</span><br><span class="line">      - 可以为父元素定义上内边距</span><br><span class="line">      - 可以为父元素添加 overflow：hidden</span><br><span class="line"></span><br><span class="line">7. 清除内外边距</span><br><span class="line"></span><br><span class="line">8. 网页元素很多都带有默认的内外边距，因此在布局前，首先要清除网页的内外边距</span><br><span class="line"></span><br><span class="line">9. ```css</span><br><span class="line">   *&#123;</span><br><span class="line">       padding:0;/* 清除内边距 */</span><br><span class="line">       margin:0; /* 清除外边距 */</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
</li>
<li><p>注意：行内元素为了照顾兼容性，尽量只设置左右内外边距，不要设置上下内外边距，但是转换为块级和行内块元素就可以了</p>
</li>
</ol>
<h4 id="浮动（float）"><a href="#浮动（float）" class="headerlink" title="浮动（float）"></a>浮动（float）</h4><h5 id="传统网页布局的三种方式"><a href="#传统网页布局的三种方式" class="headerlink" title="传统网页布局的三种方式"></a>传统网页布局的三种方式</h5><ol>
<li>网页布局的本质—-用CSS 来摆放盒子，把盒子摆放到响应对的位置</li>
<li>CSS 提供了 三种传统布局方式，简单的说就是盒子如何进行排列顺序<ol>
<li>普通流（标准流）</li>
<li>浮动</li>
<li>定位</li>
</ol>
</li>
</ol>
<h5 id="标准流"><a href="#标准流" class="headerlink" title="标准流"></a>标准流</h5><ol>
<li>块级元素会独占一行，从上向下顺序排列<ol>
<li>常用元素：div、hr、p、h1~h6、ul、ol、dl、form、table</li>
</ol>
</li>
<li>行内元素会按照顺序，从左到右排列、碰到父元素边缘则自动换行<ol>
<li>常用元素：span、a、i、em 等</li>
</ol>
</li>
</ol>
<h5 id="为什么需要浮动"><a href="#为什么需要浮动" class="headerlink" title="为什么需要浮动"></a>为什么需要浮动</h5><ol>
<li>有很多的布局效果，标准流没有办法完成，此时就可以利用浮动完成布局，因为浮动可以改变元素标签默认的排列方式</li>
<li>浮动最典型的应用：可以让多个块级元素一行内排列显示</li>
<li>网页布局第一准则：多个块级元素纵向排列找标准流，多个块级元素横向排列找浮动</li>
</ol>
<h5 id="什么是浮动"><a href="#什么是浮动" class="headerlink" title="什么是浮动"></a>什么是浮动</h5><ol>
<li><p>float属性用于创建浮动框，将其移动到一边，直到左边缘或右边缘触及包含块或另一个浮动框的边缘。</p>
</li>
<li><p>语法：</p>
<ol>
<li>```css<br>选择器{ float：属性值； }<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">| 3.    | 属性值             | 描述 |</span><br><span class="line">| ----- | ------------------ |</span><br><span class="line">| none  | 元素不浮动（默认） |</span><br><span class="line">| left  | 元素向左浮动       |</span><br><span class="line">| right | 元素向右浮动       |</span><br><span class="line"></span><br><span class="line">##### 浮动特性</span><br><span class="line"></span><br><span class="line">1. 加了浮动之后的元素，会具有很多特性</span><br><span class="line">2. 浮动元素会脱离标准流（脱标）</span><br><span class="line">3. 浮动的元素会一行内显示并且元素顶部对齐</span><br><span class="line">4. 浮动的元素会具有行内块元素的特性</span><br><span class="line">5. 浮动的盒子不再保留原先的位置</span><br><span class="line">6. 设置了浮动的元素，漂浮在普通流的上面压到普通流的上面，不占位置，脱标</span><br><span class="line">7. 重难点：</span><br><span class="line">   - 如果多个盒子都设置了浮动，则他们会按照属性值一行内显示并且顶端对齐排列</span><br><span class="line">   - 在一行显示，三个div 都要设置浮动属性</span><br><span class="line">   - 注意：浮动的元素是相互贴靠在一起的（不会有缝隙），如果父级宽度装不下这些浮动的盒子，多出的盒子会另起一行对齐</span><br><span class="line">8. 浮动元素会具有行内块元素的特性</span><br><span class="line">   - 任何元素都可以浮动，不管原先是什么模式的元素，添加了浮动之后就具有行内块元素相似的特性</span><br><span class="line">   - 如果块级盒子没有设置宽度，默认宽度和父级一样宽，但是添加了浮动后，它的大小根据内容来决定</span><br><span class="line">   - 浮动的盒子中间是没有缝隙了，是紧挨在一起的</span><br><span class="line">   - 行内元素同理</span><br><span class="line"></span><br><span class="line">##### 浮动元素经常和标准流父级搭配使用</span><br><span class="line"></span><br><span class="line">1. 为了约束浮动元素位置，我们网页布局一般采取的策略是：</span><br><span class="line">2. 先用标准流的父元素排列上下文位置，之后内部子元素采取浮动排列到左右位置，符合网页布局第一准则</span><br><span class="line"></span><br><span class="line">##### 浮动布局的注意点</span><br><span class="line"></span><br><span class="line">1. 浮动和标准流的父盒子搭配</span><br><span class="line">   - 先用标准流的父元素排列上下位置，之后内部子元素采取浮动排列左右位置</span><br><span class="line">2. 一个元素浮动了，理论上其余兄弟元素也要浮动</span><br><span class="line">   - 一个盒子里面有多个盒子，如果其中一个盒子浮动了，那么其他兄弟也要浮动，以防止引起问题</span><br><span class="line">   - 浮动的盒子只会影响浮动盒子后面的标准流，不会影响前面的标准流</span><br><span class="line">3. 不是所有父盒子都必须有高度，理想状态中，让子盒子撑开父亲，有多少孩子，父盒子就有多高，</span><br><span class="line">4. 但是，给子盒子加浮动后，不占用标准流的位置，父盒子高度就为0，就要清除浮动</span><br><span class="line">5. 浮动的盒子不会有外边距合并的问题</span><br><span class="line"></span><br><span class="line">#### 清除浮动</span><br><span class="line"></span><br><span class="line">1. 为什么要清除浮动？</span><br><span class="line"></span><br><span class="line">   - 由于父级盒子很多情况下，不方便给高度，但是盒子浮动又不占用位置，最后父级盒子高度为0时，就会影响下面的标准流盒子</span><br><span class="line">   - 由于浮动元素不再占用源文档流的位置，所以他会对后面的元素排版产生影响</span><br><span class="line"></span><br><span class="line">2. 清除浮动本质</span><br><span class="line"></span><br><span class="line">   - 清除浮动的本质是清除浮动元素造成的影响</span><br><span class="line">   - 如果父盒子本身有高度，则不需要清除浮动</span><br><span class="line">   - 清除浮动之后，父级就会根据浮动的子盒子自动检测高度，父级有了高度，就不会影响下面的标准流了</span><br><span class="line"></span><br><span class="line">3. 清除浮动</span><br><span class="line"></span><br><span class="line">   - 语法：</span><br><span class="line"></span><br><span class="line">   - ```css</span><br><span class="line">     选择器&#123; clear：属性值； &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p>| -     | 属性值                                     | 描述 |<br>| ——- | ————————————————————— |<br>| left  | 不允许左侧有浮动元素（清除左侧浮动的影响） |<br>| right | 不允许右侧有浮动元素（清除右侧浮动的影响） |<br>| both  | 同时清除左右两侧浮动的影响                 |</p>
<ul>
<li>清除浮动的策略是：闭合浮动</li>
</ul>
</li>
<li><p>清除浮动方法</p>
<ul>
<li>额外标签法，也称为隔墙法，是 W3C 推荐的做法</li>
<li>父级添加 overflow 属性</li>
<li>父级添加 after 伪元素</li>
<li>父级添加双伪元素</li>
</ul>
</li>
<li><p>额外标签法：</p>
<ul>
<li>在浮动元素末尾添加一个空的标签，例如 <code>&lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;</code> 或 其他标签。必须是块级元素，不能是行内元素</li>
<li>优点：通俗易懂，书写方便</li>
<li>缺点：添加许多无意义的标签结构化较差</li>
<li>注意：要求这个新的空标签必须是块级元素</li>
</ul>
</li>
<li><p>overflow 属性，将其属性值设置为 hidden 、auto 或 scroll，</p>
<ul>
<li>注意给父级元素添加代码</li>
<li>优点：代码简洁</li>
<li>缺点：无法显示溢出的部分</li>
</ul>
</li>
<li><p>：after 伪元素法</p>
<ul>
<li><p>：after方式是额外标签法的升级版，也是给父元素添加</p>
</li>
<li><p>```css<br>.clearfix:after {</p>
<pre><code>content:&quot;&quot;;
display:block;
height:0;
clear:both;
visibility:hidden;
</code></pre><p>}<br>.clearfix {</p>
<pre><code>/* IE6、7 专有 可以使用来清除浮动 */
*zoom:1;
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">   - 优点：没有增加标签，结构更简单</span><br><span class="line"></span><br><span class="line">   - 缺点：照顾低版本浏览器</span><br><span class="line"></span><br><span class="line">   - 代表网站：百度、淘宝网易等</span><br><span class="line"></span><br><span class="line">8. 双伪元素清除浮动</span><br><span class="line"></span><br><span class="line">   - 也是给父元素添加</span><br><span class="line"></span><br><span class="line">   - ```css</span><br><span class="line">     /* before 前面闭合，也就是在前面加了一堵墙 */</span><br><span class="line">     .clearfix:before,.cliearfix:after &#123;</span><br><span class="line">     	content:&quot;&quot;;</span><br><span class="line">         display:table;</span><br><span class="line">     &#125;</span><br><span class="line">     /* after 后面闭合，也就是在后面加了一堵墙 */</span><br><span class="line">     .clearfix:after &#123;</span><br><span class="line">         clear:both;</span><br><span class="line">     &#125;</span><br><span class="line"></span><br><span class="line">     .clearfix &#123;</span><br><span class="line">         *zoom:1;</span><br><span class="line">     &#125;</span><br></pre></td></tr></table></figure>
</li>
<li><p>优点：代码更简洁</p>
</li>
<li><p>缺点：照顾低版本浏览器</p>
</li>
<li><p>代表网站：小米、腾讯等</p>
</li>
</ul>
</li>
</ol>
<h4 id="定位"><a href="#定位" class="headerlink" title="定位"></a>定位</h4><h5 id="为什么需要定位"><a href="#为什么需要定位" class="headerlink" title="为什么需要定位"></a>为什么需要定位</h5><ol>
<li>某个元素可以自由的在一个盒子内移动位置，并且压住其他盒子</li>
<li>浮动可以让多个块级盒子一行没有缝隙排列显示，经常用于横向排列盒子</li>
<li>定位则是可以让盒子自由的在某个盒子内移动位置，或者固定在屏幕中的某个位置并且可以压住其他盒子</li>
</ol>
<h5 id="定位组成"><a href="#定位组成" class="headerlink" title="定位组成"></a>定位组成</h5><ol>
<li>定位：将盒子定在某一个位置，所以定位也是在摆放盒子，按照定位的方式移动盒子</li>
<li>定位 = 定位模式 + 边偏移</li>
<li>定位模式用于指定一个元素在文档中的定位方式，边偏移则决定了该元素的最终位置</li>
</ol>
<h6 id="定位模式"><a href="#定位模式" class="headerlink" title="定位模式"></a>定位模式</h6><ol>
<li>定位模式决定元素的定位方式，他通过 CSS 的 position 属性来设置，其值可分为四个：</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>值</th>
<th>语义</th>
</tr>
</thead>
<tbody>
<tr>
<td>static</td>
<td>静态定位</td>
</tr>
<tr>
<td>relative</td>
<td>相对定位</td>
</tr>
<tr>
<td>absolute</td>
<td>绝对定位</td>
</tr>
<tr>
<td>fixed</td>
<td>固定定位</td>
</tr>
</tbody>
</table>
</div>
<h6 id="边偏移"><a href="#边偏移" class="headerlink" title="边偏移"></a>边偏移</h6><ol>
<li>边偏移就是定位的盒子移动到最终位置，有 top 、bottom、 left 和 right 4 个属性</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>边偏移属性</th>
<th>示例</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>top</td>
<td>top：80px</td>
<td>顶端偏移量：定义元素相对于其父元素上边线的距离</td>
</tr>
<tr>
<td>bottom</td>
<td>bottom：80px</td>
<td>底部偏移量：定义元素相对于其父元素下边线的距离</td>
</tr>
<tr>
<td>left</td>
<td>left：80px</td>
<td>左侧偏移量：定义元素相对于其父元素左边线的距离</td>
</tr>
<tr>
<td>right</td>
<td>right：80px</td>
<td>右侧偏移量：定义元素相对于其父元素右边线的距离</td>
</tr>
</tbody>
</table>
</div>
<h5 id="静态定位"><a href="#静态定位" class="headerlink" title="静态定位"></a>静态定位</h5><ol>
<li><p>静态定位是元素的默认定位方式，无定位的意思</p>
</li>
<li><p>语法：</p>
</li>
<li><p>```css<br>{ position:static; }</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">4. 静态定位按照标准流特性摆放位置，他没有边偏移</span><br><span class="line"></span><br><span class="line">5. 静态定位布局时候很少用到</span><br><span class="line"></span><br><span class="line">##### 相对定位</span><br><span class="line"></span><br><span class="line">1. 相对定位是元素在移动位置的时候，是相对于它	原来的位置来说的（自恋型）</span><br><span class="line"></span><br><span class="line">2. 语法：</span><br><span class="line"></span><br><span class="line">3. ```css</span><br><span class="line">   &#123; position:relative; &#125;</span><br></pre></td></tr></table></figure>
</li>
<li><p>相对定位的特定：（务必记住）</p>
<ul>
<li>他是相对于自己原来的位置来移动的（移动位置的时候，参照的是自己原来的位置）</li>
<li>原来在标准流的位置继续占有，后面的盒子仍然以标准流的方式对待他（不脱标，继续保留原来位置）</li>
<li>因此，相对定位并没有脱标它最典型的应用是给决对定位当爹的</li>
</ul>
</li>
</ol>
<h5 id="绝对定位-absolute（重要）"><a href="#绝对定位-absolute（重要）" class="headerlink" title="绝对定位 absolute（重要）"></a>绝对定位 absolute（重要）</h5><ol>
<li><p>绝对定位是元素在移动位置的时候，相对于它祖先元素来说的（拼爹型）</p>
</li>
<li><p>语法：</p>
</li>
<li><p>```css<br>选择器 { position：absolute； }</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">4. 绝对定位的特点：（务必记住）</span><br><span class="line"></span><br><span class="line">   - 如果没有祖先元素或祖先元素没有定位，则以浏览器为准定位（Document 文档）</span><br><span class="line">   - 如果 祖先元素有定位（相对、绝对、固定定位），则以最近一级的有定位祖先元素为参考点移动位置</span><br><span class="line">   - 绝对定位不在占有原先的位置（脱标）</span><br><span class="line"></span><br><span class="line">##### 子绝父相</span><br><span class="line"></span><br><span class="line">1. 子级是绝对定位的话，父级要用相对定位</span><br><span class="line">2. 子级绝对定位，不会占有位置，可以放到父盒子里面的任何一个地方，不会影响其他的兄弟盒子</span><br><span class="line">3. 父盒子需要加定位限制子盒子在父盒子内显示</span><br><span class="line">4. 父盒子布局时，需要占有位置，因此父亲只能是相对定位</span><br><span class="line">5. 这就是子绝父相的由来，所以相对定位经常用来作为绝对定位的父级</span><br><span class="line">6. 总结：因为父级需要占有位置，因此是相对定位，子盒子不需要占有位置，则是绝对定位</span><br><span class="line">7. 当然，子绝父相不是永远不变的，如果父元素不需要占有位置，子绝父相也会遇到</span><br><span class="line"></span><br><span class="line">##### 固定定位（fixed）</span><br><span class="line"></span><br><span class="line">1. 固定定位是元素固定于浏览器可视区的位置，主要使用场景：可以在浏览器页面滚动时元素的位置不会改变</span><br><span class="line"></span><br><span class="line">2. 语法：</span><br><span class="line"></span><br><span class="line">3. ```css</span><br><span class="line">   选择器&#123; position：fixed； &#125;</span><br></pre></td></tr></table></figure>
</li>
<li><p>固定定位特点：（务必记住）</p>
</li>
<li><p>以浏览器的可视窗口为参照点移动元素</p>
<ul>
<li>跟父元素没有任何关系</li>
<li>不随滚动条滚动</li>
</ul>
</li>
<li><p>固定定位不在占有原先的位置</p>
</li>
<li><p>固定定位也是脱标的，其实固定定位也可以看做是一种特殊的绝对定位</p>
</li>
</ol>
<h6 id="固定在版心右侧位置"><a href="#固定在版心右侧位置" class="headerlink" title="固定在版心右侧位置"></a>固定在版心右侧位置</h6><ol>
<li>小算法：</li>
<li>让固定定位的盒子 left：50%。走到浏览器的可视区域（也可以看做版心）的一半位置</li>
<li>让固定定位的盒子 margin-left:版心宽度的一半距离，多走版心的一般距离</li>
<li>就可以实现 返回顶部 靠版心对齐了</li>
</ol>
<h5 id="粘性定位-sticky"><a href="#粘性定位-sticky" class="headerlink" title="粘性定位 sticky"></a>粘性定位 sticky</h5><ol>
<li><p>粘性定位可以被认为是相对定位和固定定位的混合，Sticty 粘性的</p>
</li>
<li><p>语法：</p>
</li>
<li><p>```css<br>选择器 { position：sticky；top：10px }</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">4. 特点：</span><br><span class="line"></span><br><span class="line">   1. 以浏览器的可视窗口为参照点移动元素（固定定位的特点）</span><br><span class="line">   2. 粘性定位占有原先的位置（相对定位的特点）</span><br><span class="line">   3. 必须添加 top、left、right、 bottom其中一个才有效</span><br><span class="line"></span><br><span class="line">5. 跟页面滚动搭配使用，兼容性差</span><br><span class="line"></span><br><span class="line">##### 定位叠放次序</span><br><span class="line"></span><br><span class="line">1. 在使用定位布局时，可能会出现盒子重叠的情况，此时可以使用，z-index 来控制盒子的前后次序（Z轴）</span><br><span class="line"></span><br><span class="line">2. 语法：</span><br><span class="line"></span><br><span class="line">3. ```css</span><br><span class="line">   选择器 &#123; z-index：1； &#125;</span><br></pre></td></tr></table></figure>
</li>
<li><p>数值可以是正整数、负整数 或 0，默认是 auto ，数值越大，盒子越靠上</p>
</li>
<li><p>如果属性值相同，则按照书写顺序，后来居上</p>
</li>
<li><p>数值后面不能加单位</p>
</li>
<li><p>只有定位的盒子才有这个属性</p>
</li>
</ol>
<h6 id="定位的拓展"><a href="#定位的拓展" class="headerlink" title="定位的拓展"></a>定位的拓展</h6><ol>
<li>绝对定位的盒子居中<ul>
<li>加了绝对定位的盒子不能通过 margin：0 auto 水平居中，但是可以通过以下计算方法实现水平和垂直居中<ol>
<li>left：50%；让盒子的左侧移动到父级元素的水平中心位置</li>
<li>margin-left：-100px；让盒子向左移动自身盒子的一半</li>
</ol>
</li>
</ul>
</li>
<li>定位特殊特性<ul>
<li>绝对定位和固定定位也和浮动类似<ol>
<li>行内元素添加绝对或者固定定位，可以直接设置高度和宽度</li>
<li>块级元素添加绝对或者固定定位，如果不给宽度或者高度，默认大小是内容的大小</li>
</ol>
</li>
</ul>
</li>
<li>脱标的盒子不会触发外边距塌陷<ul>
<li>浮动元素、绝对定位（固定定位）元素的都不会触发外边距合并的问题</li>
</ul>
</li>
<li>绝对定位（固定定位）会完全压住盒子<ul>
<li>浮动元素不同，只会压住它下面标准流的盒子，但是不会压住下面标准流盒子里面的文字（图片）</li>
<li>但是绝对定位（固定定位）会压住下面标准流所有的内容</li>
<li>浮动之所以不会压住文字，因为浮动产生的目的最初是为了做文字环绕效果的，文字会围绕浮动元素</li>
</ul>
</li>
</ol>
<h5 id="定位的总结"><a href="#定位的总结" class="headerlink" title="定位的总结"></a>定位的总结</h5><div class="table-container">
<table>
<thead>
<tr>
<th>1.</th>
<th>定位模式</th>
<th>是否</th>
<th>移动位置</th>
<th>是否常用</th>
</tr>
</thead>
<tbody>
<tr>
<td>static 静态定位</td>
<td>否</td>
<td>不能使用边偏移</td>
<td>很少</td>
</tr>
<tr>
<td>relative 相对定位</td>
<td>否（占有位置）</td>
<td>相对于自身位置移动</td>
<td>常用</td>
</tr>
<tr>
<td>absolute 绝对定位</td>
<td>是（不占有位置）</td>
<td>带有定位的父级</td>
<td>常用</td>
</tr>
<tr>
<td>fixed 固定定位</td>
<td>是（不占有位置）</td>
<td>浏览器可视区</td>
<td>常用</td>
</tr>
<tr>
<td>sticky 粘性定位</td>
<td>否（占有位置）</td>
<td>浏览器可视区</td>
<td>当前阶段少</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li>如果一个盒子，既有 left 属性，又有 right 属性，默认会执行 left 属性，先左后右，先上后下</li>
</ol>
<h4 id="圆角边框"><a href="#圆角边框" class="headerlink" title="圆角边框"></a>圆角边框</h4><ol>
<li><p>border-radius：属性用于设置元素的外边框圆角</p>
</li>
<li><p>语法：</p>
</li>
<li><p>```css<br>border-radius:leagth;</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">4. 参数值可以为数值或百分比的形式</span><br><span class="line"></span><br><span class="line">5. 如果是正方形，想要设置为一个圆形，吧数值修改为高度或者宽度的一半即可，或者直接写为50%</span><br><span class="line"></span><br><span class="line">6. 如果是个矩形，设置为高度的一半就可以做 圆角矩形</span><br><span class="line"></span><br><span class="line">7. 该属性是一个简写属性，可以跟四个值，分别代表左上角、右上角、右下角、左下角</span><br><span class="line"></span><br><span class="line">#### 盒子阴影</span><br><span class="line"></span><br><span class="line">1. CSS3 中新增了盒子阴影，我们可以使用 box-shadow 属性为盒子添加阴影</span><br><span class="line"></span><br><span class="line">2. ```css</span><br><span class="line">   box-shadow:h-shadow v-shadow blur spread color inset;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>3.</th>
<th>值</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>h-shadow</td>
<td>必需，水平阴影的位置，允许为负值</td>
</tr>
<tr>
<td>v-shadow</td>
<td>必需，垂直阴影的位置，允许为负值</td>
</tr>
<tr>
<td>blur</td>
<td>可选，模糊距离</td>
</tr>
<tr>
<td>spread</td>
<td>可选，阴影的尺寸</td>
</tr>
<tr>
<td>color</td>
<td>可选，阴影的颜色，</td>
</tr>
<tr>
<td>inset</td>
<td>可选，将外部阴影（outset）改为内部阴影</td>
</tr>
</tbody>
</table>
</div>
<h4 id="文字阴影"><a href="#文字阴影" class="headerlink" title="文字阴影"></a>文字阴影</h4><ol>
<li><p>text-shadow 属性将阴影应用于文本</p>
</li>
<li><p>```css<br>text-shadow:h-shadow v-shadow blur color;</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">| 3.       | 值                             | 描述 |</span><br><span class="line">| -------- | ------------------------------ |</span><br><span class="line">| h-shadow | 必需，水平阴影的位置，允许负值 |</span><br><span class="line">| v-shadow | 必需，垂直阴影的位置，允许负值 |</span><br><span class="line">| blur     | 可选，模糊的距离               |</span><br><span class="line">| color    | 可选，阴影的颜色               |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">### 元素的显示与隐藏</span><br><span class="line"></span><br><span class="line">1. 本质：让一个元素在页面中隐藏或者显示出来</span><br><span class="line">2. display:显示隐藏</span><br><span class="line">3. visibility 显示隐藏</span><br><span class="line">4. overflow 溢出显示隐藏</span><br><span class="line"></span><br><span class="line">#### display 属性</span><br><span class="line"></span><br><span class="line">1. display：none；隐藏对象</span><br><span class="line">2. display：block；除了转换为块级元素之外，同时还有显示元素的意思</span><br><span class="line">3. display 隐藏元素后，不在占有原来的位置</span><br><span class="line"></span><br><span class="line">#### visibility 可见性</span><br><span class="line"></span><br><span class="line">1. visibility 属性用于指定一个元素应可见还是隐藏</span><br><span class="line">2. visibility：visible；元素可视</span><br><span class="line">3. visibility：hidden；元素隐藏</span><br><span class="line">4. visibility 隐藏元素后，继续占有原来的位置</span><br><span class="line">5. 如果隐藏元素想要原来位置，就用 visibility：hidden</span><br><span class="line">6. 如果隐藏元素不想要原来的位置，就用 display：none（用处更多）</span><br><span class="line"></span><br><span class="line">#### overflow 溢出</span><br><span class="line"></span><br><span class="line">1. overflow 属性指定了如果内容溢出一个元素的框（超过其指定的高度及宽度）时会发生</span><br><span class="line">2. overflow-x 当一个块级元素的内容在水平方向发生溢出时，CSS属性 overflow-x 决定应该截断溢出内容，或者显示滚动条，或者直接显示溢出内容。</span><br><span class="line"></span><br><span class="line">| 2.      | 属性值                                     | 描述 |</span><br><span class="line">| ------- | ------------------------------------------ |</span><br><span class="line">| visible | 不剪切内容也不添加滚动条                   |</span><br><span class="line">| hidden  | 不显示超过对象尺寸的内容，超出的部分隐藏掉 |</span><br><span class="line">| scroll  | 不管超出内容否，总是显示滚动条             |</span><br><span class="line">| auto    | 超出自动显示滚动条                         |</span><br><span class="line"></span><br><span class="line">3. 如果有定位的盒子，请慎用 overflow：hidden 因为它会隐藏多余的部分</span><br><span class="line"></span><br><span class="line">#### 总结</span><br><span class="line"></span><br><span class="line">1. display ：显示隐藏元素，但是不保留位置</span><br><span class="line">2. visibility：显示隐藏元素，但是保留原来的位置</span><br><span class="line">3. overflow：溢出显示隐藏，但是只是对于溢出的部分处理</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">## CSS 高级</span><br><span class="line"></span><br><span class="line">### 精灵图</span><br><span class="line"></span><br><span class="line">#### 为什么需要精灵图？</span><br><span class="line"></span><br><span class="line">1. 为了有效的减少服务器接收和发送请求的次数，提高页面的加载速度，出现了CSS精灵图（CSS Sprites、CSS 雪碧）</span><br><span class="line">2. 核心原理：将网页中的一些小背景图像整合到一张大图中，这样服务器只需要一次请求就可以了</span><br><span class="line"></span><br><span class="line">#### 精灵图的使用</span><br><span class="line"></span><br><span class="line">1. 核心</span><br><span class="line">   - 精灵技术主要针对背景图片使用，就是把多个小背景图片整合到一张大图中</span><br><span class="line">   - 这个大图片也称为 Sprites 精灵图 或者 雪碧图</span><br><span class="line">   - 移动背景图片位置，此时可以使用 background-position</span><br><span class="line">   - 移动 的 距离就是这个目标图片的 X 和 Y 坐标，网页中的坐标有所不同</span><br><span class="line">   - 因为一般情况下都是往上往左移动，所以数据是负值</span><br><span class="line">   - 使用精灵图的时候需要精确测量，每个小背景图片的大小和位置</span><br><span class="line">2. 总结：</span><br><span class="line">   - 精灵图主要针对于小的背景图片使用</span><br><span class="line">   - 主要借助于背景位置来实现----background-position</span><br><span class="line">   - 一般情况下精灵图都是负值（千万注意网页中的坐标：x 轴右边走是正值，左边走是负值，y轴同理）</span><br><span class="line">3. 缺点：</span><br><span class="line">   1. 图标文件还是比较大的</span><br><span class="line">   2. 图片本身放大和缩小，会失真</span><br><span class="line">   3. 一旦图片制作完毕想要更换非常复杂</span><br><span class="line">4. 字体图标 iconfont，就能完全解决这个问题</span><br><span class="line"></span><br><span class="line">### 字体图标</span><br><span class="line"></span><br><span class="line">#### 字体图标的产生</span><br><span class="line"></span><br><span class="line">1. 字体图标使用场景：主要用于显示网页中通用、常用的一些小图标</span><br><span class="line">2. 为了解决精灵图带来的不便</span><br><span class="line">3. 字体图标展示的是图标，本质属于字体</span><br><span class="line"></span><br><span class="line">#### 字体图标的优点</span><br><span class="line"></span><br><span class="line">1. 轻量级：一个图标字体要比一系列的图像要小，一旦字体加载了，图标就会马上渲染出来，减少了服务器请求</span><br><span class="line">2. 灵活性：本质其实是文字，可以很随意的改变颜色，产生阴影、透明效果、旋转等</span><br><span class="line">3. 兼容性：几乎支持所有的浏览器</span><br><span class="line">4. 注意：字体图标不能替代精灵技术，只是对工作中图标部分技能的提升和优化</span><br><span class="line">5. 总结：</span><br><span class="line">   - 如果遇到一些结构和样式比较简单的小图标，就用字体图标</span><br><span class="line">   - 如果遇到一些结构和样式复杂一点的小图标，就用精灵图</span><br><span class="line"></span><br><span class="line">#### 字体图标使用</span><br><span class="line"></span><br><span class="line">1. 字体图标的下载</span><br><span class="line"></span><br><span class="line">2. 字体图标的引入（引入到我们 html 页面中）</span><br><span class="line"></span><br><span class="line">3. 字体图标的追加（以后添加新的小图标）</span><br><span class="line"></span><br><span class="line">4. 推荐网站：</span><br><span class="line"></span><br><span class="line">   - 阿里 iconfont 字体库 http://www.iconfont.cn/</span><br><span class="line">   - icomoon 字体库 http://icomoon.io</span><br><span class="line"></span><br><span class="line">5. 下载完毕后：</span><br><span class="line"></span><br><span class="line">   - 把下载包里面的 fonts 文件夹放入页面根目录下</span><br><span class="line">   - fonts 里面有 4 个字体文件，因为不同浏览器支持的格式不一样</span><br><span class="line"></span><br><span class="line">6. 字体图标引入：</span><br><span class="line"></span><br><span class="line">   - 在 CSS 样式 中全局声明字体：简单理解把这些字体文件引入</span><br><span class="line"></span><br><span class="line">   - 一定要注意字体文件路径</span><br><span class="line"></span><br><span class="line">   - ![](img/%E5%AD%97%E4%BD%93%E5%9B%BE%E6%A0%87.jpg)</span><br><span class="line"></span><br><span class="line">   - 字体声明</span><br><span class="line"></span><br><span class="line">   - ```css</span><br><span class="line">     span&#123;</span><br><span class="line">         /* 指定字体 */</span><br><span class="line">         font-family:&#x27;icomoon&#x27;</span><br><span class="line">     &#125;</span><br></pre></td></tr></table></figure>
</li>
<li><p>字体图标的追加</p>
<ol>
<li>吧压缩包里面的 selection.json 从新上传，然后选择自己想要的图标，从新的压缩包，替换为原来的文件即可</li>
</ol>
</li>
</ol>
<h3 id="CSS-三角"><a href="#CSS-三角" class="headerlink" title="CSS 三角"></a>CSS 三角</h3><ol>
<li><p>网页中常见一些三角形，使用 CSS 直接画出来就可以，不必做成图片或字体图标</p>
</li>
<li><p>```css<br>div {</p>
<pre><code>/* 宽高一定设置为0 */
width:0;
height:0;
/* 垂直居中和字体大小也为 0 为了照顾兼容性 */
line-height:0;
font-size:0;
/* 边框大小，上下左右都为50px，且透明 */
border:50px solid transoaren;
/* 想要什么样的三角，直接加颜色方向即可 */
border-left-color:pink;
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">3. 常见对话框提示</span><br><span class="line"></span><br><span class="line">4. ```html</span><br><span class="line"></span><br><span class="line">   &lt;!-- 第一个盒子为三角,后将三角定位到第二个盒子边缘即可 --&gt;</span><br><span class="line">   &lt;div class=&quot;box1&quot;&gt;&lt;/div&gt;</span><br><span class="line">   &lt;!-- 第二个盒子为提示框 --&gt;</span><br><span class="line">   &lt;div class=&quot;box2&quot;&gt;&lt;/div&gt;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p>5.</p>
<h3 id="CSS-用户界面样式"><a href="#CSS-用户界面样式" class="headerlink" title="CSS 用户界面样式"></a>CSS 用户界面样式</h3><ol>
<li>更改一些用户操作样式</li>
</ol>
<h4 id="更改用户的鼠标样式"><a href="#更改用户的鼠标样式" class="headerlink" title="更改用户的鼠标样式"></a>更改用户的鼠标样式</h4><ol>
<li>cursor：属性</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>属性值</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>default</td>
<td>小白（默认）</td>
</tr>
<tr>
<td>pointer</td>
<td>小手</td>
</tr>
<tr>
<td>move</td>
<td>移动</td>
</tr>
<tr>
<td>text</td>
<td>文本</td>
</tr>
<tr>
<td>not-allowed</td>
<td>禁止</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li>```css<br>cursor:pointer;<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">4.</span><br><span class="line"></span><br><span class="line">#### 表单轮廓</span><br><span class="line"></span><br><span class="line">1. 轮廓线 outline：</span><br><span class="line"></span><br><span class="line">2. 给表单添加 outline：0；或者 outline：none；样式之后，就可以去掉默认的蓝色边框</span><br><span class="line"></span><br><span class="line">3. ```css</span><br><span class="line">   input &#123;</span><br><span class="line">       outline:none;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h4 id="防止表单域拖拽"><a href="#防止表单域拖拽" class="headerlink" title="防止表单域拖拽"></a>防止表单域拖拽</h4><ol>
<li><p>resize</p>
</li>
<li><p>```css<br>textarea {</p>
<pre><code>resize:none;
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">3. 注意：</span><br><span class="line"></span><br><span class="line">   - 文本框，如果左边距有距离，将开始结尾标签放到一行就可以了</span><br><span class="line">   -</span><br><span class="line"></span><br><span class="line">### vertical-align 属性应用</span><br><span class="line"></span><br><span class="line">1. CSS 的 vertical-align 属性使用场景：</span><br><span class="line"></span><br><span class="line">   - 经常用于设置图片或者表单（行内块元素）和文字垂直对齐</span><br><span class="line"></span><br><span class="line">2. 在 div 标签中，图片和文字垂直居中，</span><br><span class="line"></span><br><span class="line">3. 块级元素无法使用，只针对行内和行内块元素有效</span><br><span class="line"></span><br><span class="line">4. 官方解释：</span><br><span class="line"></span><br><span class="line">   - 用于设置一个元素的垂直对齐方式，但是它只针对行内和行内块元素有效</span><br><span class="line"></span><br><span class="line">5. 语法：</span><br><span class="line"></span><br><span class="line">   - ```css</span><br><span class="line">     vertical-align:baseline | top | middle | bottom</span><br><span class="line">     /* 让图片和文字垂直居中 */</span><br><span class="line">     vertical-align:middle;</span><br></pre></td></tr></table></figure>
<p>| -        | 值                                   | 描述 |<br>| ———— | —————————————————— |<br>| baseline | 默认，元素放置在父元素的基线上       |<br>| top      | 把元素的顶端与行中最高元素的顶端对齐 |<br>| middle   | 把此元素放置在父元素的中部           |<br>| bottom   | 把元素的顶端与行中最低的顶端对齐     |</p>
<ul>
<li><p>字符：</p>
<ol>
<li>顶线：top line</li>
<li>中线：middle line</li>
<li>基线：base line</li>
<li>底线：bottom line</li>
</ol>
</li>
</ul>
</li>
<li><p>解决图片底部默认空白缝隙问题：</p>
<ul>
<li>bug：图片低侧会有一个空白缝隙。原因是行内块元素会和文字的基线对齐</li>
<li>主要解决方法有两种：<ul>
<li>给图片添加 vertical-align:middle | top | bottom 等（提倡使用）</li>
</ul>
</li>
<li>吧图片转换为块级元素：display：block；</li>
</ul>
</li>
</ol>
<h3 id="溢出的文字省略号显示"><a href="#溢出的文字省略号显示" class="headerlink" title="溢出的文字省略号显示"></a>溢出的文字省略号显示</h3><h4 id="单行文本溢出显示省略号"><a href="#单行文本溢出显示省略号" class="headerlink" title="单行文本溢出显示省略号"></a>单行文本溢出显示省略号</h4><ol>
<li><p>必须满足三个条件</p>
<ol>
<li><p>先强制一行内显示文本</p>
<ul>
<li>```css<br>white-space:nowrap;(默认 normal 自动换行)<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">2. 超出的部分隐藏</span><br><span class="line"></span><br><span class="line">   - ```css</span><br><span class="line">     overflow:hidden;</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
<li><p>文字用省略号替代超出的部分</p>
<ul>
<li>```css<br>/<em> ellipsis 省略号 </em>/<br>text-overflow:ellipsis;<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">      -</span><br><span class="line"></span><br><span class="line">#### 多行文本溢出显示省略号</span><br><span class="line"></span><br><span class="line">1. 多行文本溢出显示省略号：有较大的兼容性问题，适合于webkit 浏览器或移动端（移动端大部分是wenkot内核）</span><br><span class="line">2. ![](img/%E5%A4%9A%E8%A1%8C%E6%96%87%E5%AD%97%E7%9C%81%E7%95%A5%E5%8F%B7%E6%98%BE%E7%A4%BA.jpg)</span><br><span class="line"></span><br><span class="line">### 常见布局技巧</span><br><span class="line"></span><br><span class="line">#### margin 负值的巧妙运用</span><br><span class="line"></span><br><span class="line">1.  小 li 多个 小 li 边框会被压着，边框就会变粗</span><br><span class="line">2. 想要解决，margin-left: - 1(边框大小)</span><br><span class="line">3. 让每个盒子 margin 往左侧移动 -1px 证号压着相邻盒子边框</span><br><span class="line">4. 鼠标经过某个盒子的时候，提高当前盒子的层级即可</span><br><span class="line">5. （如果）没有定位，则加相对定位（保留位置），如果有定位，则加 z-index</span><br><span class="line"></span><br><span class="line">#### 文字围绕浮动元素</span><br><span class="line"></span><br><span class="line">1. 巧妙运用，浮动元素不会压住文字的特性</span><br><span class="line">2. 左边图片，右边文字</span><br><span class="line">3. 不需要给右边盒子指定宽高右浮动</span><br><span class="line">4. 只需要给左侧盒子添加浮动，文字自然会围绕右边盒子旋转</span><br><span class="line"></span><br><span class="line">#### 行内块巧妙运用</span><br><span class="line"></span><br><span class="line">1. 给父盒子添加text-algin:center ，行内块元素自然就居中对齐</span><br><span class="line"></span><br><span class="line">#### CSS 三角强化</span><br><span class="line"></span><br><span class="line">1. div 左边和下边的边框宽度设置为0</span><br><span class="line"></span><br><span class="line">2. 吧上边框宽度调大，就可以得到直角三角形效果了</span><br><span class="line"></span><br><span class="line">3. 宽高必须设置为0</span><br><span class="line"></span><br><span class="line">4. 代码：</span><br><span class="line"></span><br><span class="line">5. ```css</span><br><span class="line">   width:0;</span><br><span class="line">   height:0;</span><br><span class="line">   border-color:transparent red transparent transprent;</span><br><span class="line">   border-style:solid;</span><br><span class="line">   border-width:22px 8px 0 0;</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
</ol>
</li>
</ol>
<h3 id="CSS-初始化"><a href="#CSS-初始化" class="headerlink" title="CSS 初始化"></a>CSS 初始化</h3><ol>
<li>不同浏览器对有些标签的默认值是不同的，为了消除不同浏览器对 HTML 文本导致的差异，照顾浏览器的兼容，我们需要对 CSS 初始化</li>
<li>简单理解：CSS 初始化是指重设浏览器的样式，（也成为CSS reset）</li>
<li>每个网页都必须首选进行CSS初始化</li>
<li>Unicode编码字体：<ul>
<li>吧中文体的名称用响应的Unicode编码来代替，</li>
<li>这样就可以有效的避免浏览器解释CSS代码的时候出现乱码问题</li>
<li>黑体：\9ED\4F53</li>
<li>宋体\5B8B\4f53</li>
</ul>
</li>
</ol>
<h1 id="Emmet-语法"><a href="#Emmet-语法" class="headerlink" title="Emmet 语法"></a>Emmet 语法</h1><h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><ol>
<li>Emmet 语法的前身是 Zen coding ，它使用缩写，来提高 html/css 的编写速度，VsCode 内部已经集成该语法</li>
<li>快速生成 HTML 结构语法</li>
<li>快速生成 CSS 样式 语法</li>
</ol>
<h2 id="快速生成-HTML-结构语法"><a href="#快速生成-HTML-结构语法" class="headerlink" title="快速生成 HTML 结构语法"></a>快速生成 HTML 结构语法</h2><ol>
<li>生成标签直接输入标签名，按 tab 键即可，比如 div 然后 tab 键，就可以生成 <code>&lt;div&gt;&lt;/div&gt;</code></li>
<li>如果想要生成多个相同标签，加上 <em>  就可以了，比如 div</em>3 就可以快速生成 3 个 div</li>
<li>如果有父子级关系的标签，可以用 &gt; 比如 ul &gt; li 就可以了</li>
<li>如果有兄弟关系的标签，用 + 就可以了 比如 div+p</li>
<li>如果生成带有类名或者 id 名字的，直接写 .demo 或者 #two tab 键就可以了</li>
<li>如果生成的 div 类名是有顺序的，可以用自增符号 $</li>
<li>如果想要在生成的标签内部写内容可以用{}</li>
</ol>
<h2 id="快速生成-Css-样式"><a href="#快速生成-Css-样式" class="headerlink" title="快速生成 Css 样式"></a>快速生成 Css 样式</h2><ol>
<li>基本采取简写形式即可，<ol>
<li>比如 w200 按 tab 键 可以生成 width：200px；</li>
<li>比如 lh26 按 tab 键 可以生成 line-height：26px；</li>
</ol>
</li>
</ol>
<h1 id="自动格式化代码"><a href="#自动格式化代码" class="headerlink" title="自动格式化代码"></a>自动格式化代码</h1><ol>
<li>设置=&gt;找到 emmet.include =&gt;    在json 中打开</li>
<li>“editor.formatOnType”:true</li>
<li>“editor.formatOnSave”:true</li>
</ol>
<h1 id="网页布局准则"><a href="#网页布局准则" class="headerlink" title="网页布局准则"></a>网页布局准则</h1><ol>
<li>网页布局第一准则：多个块级元素纵向排列找标准流，多个块级元素横向排列找浮动</li>
<li>只要是通栏的盒子（和浏览器一样宽），不需要指定宽度</li>
<li>浮动的盒子不会有外边距合并的问题</li>
<li>总结：<ol>
<li>标准流<ul>
<li>可以让盒子上下排列或者左右排列，垂直的块级盒子显示，就用标准流布局</li>
</ul>
</li>
<li>浮动<ul>
<li>可以让多个块级元素一行显示或者左右对齐盒子，多个块级盒子水平显示就用浮动布局</li>
</ul>
</li>
<li>定位<ul>
<li>定位最大的特点是有层叠的概念，就是可以让多个盒子</li>
<li>前后叠压来显示，如果元素自由在某个盒子内移动就用定位布局</li>
</ul>
</li>
</ol>
</li>
</ol>
<h1 id="CSS-属性书写顺序"><a href="#CSS-属性书写顺序" class="headerlink" title="CSS 属性书写顺序"></a>CSS 属性书写顺序</h1><ol>
<li>布局定位属性：display / position / float / clear / visibility / overflow （建议 display 第一个写，毕竟关系到模式）</li>
<li>自身属性：width / height / margin / padding / border / background</li>
<li>文本属性：color / font / text-decoration / text-align / vertical-align / white-space / break-word</li>
<li>其他属性：（CSS3）content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient….</li>
</ol>
<h1 id="页面布局整体思路"><a href="#页面布局整体思路" class="headerlink" title="页面布局整体思路"></a>页面布局整体思路</h1><ol>
<li>必须确定页面的版心（可视区域），我们测量可得知；</li>
<li>分析页面中的行模块，以及每个行模块中的列模块，其实是页面布局的第一准则</li>
<li>一行中的列模块经常浮动布局，先确定每个列的大小，之后确定列的位置页面布局第二准则</li>
<li>制作 HTML 结构，我们还是遵循，现有结构，后有样式的原则，结构永远最重要</li>
<li>所以，先理清楚布局结构，再写代码尤为重要</li>
</ol>
<h1 id="导航栏注意："><a href="#导航栏注意：" class="headerlink" title="导航栏注意："></a>导航栏注意：</h1><ol>
<li>实际开发中，我们不会直接用链接 a 而是用 li 包含链接（li+a）的做法</li>
<li>li + a 语义更清晰，一看这就是有条理的列表性内容</li>
<li>如果直接用 a，搜索引擎容易辨别为有堆砌关键字嫌疑，（故意堆砌关键字容易被搜索引擎有降权的风险）从而影响排名</li>
<li>注意：<ul>
<li>让导航栏一行显示，给 li 加 浮动，因为 li 是块级元素，需要一行显示</li>
<li>这个 nav 导航栏 可以不给宽度，将来可以继续添加其余文字</li>
<li>因为导航栏里面文字不一样多，所以最好给链接 a 左右 padding 撑开盒子，而不是指定宽度</li>
</ul>
</li>
</ol>
<h1 id="HTML5和-CSS3-的新特性"><a href="#HTML5和-CSS3-的新特性" class="headerlink" title="HTML5和 CSS3 的新特性"></a>HTML5和 CSS3 的新特性</h1><h2 id="HTML5的新特性"><a href="#HTML5的新特性" class="headerlink" title="HTML5的新特性"></a>HTML5的新特性</h2><ol>
<li>HTML5 的新增特性主要是针对于以前的不足，增加了一些新的标签，新的表单和新的表单属性</li>
</ol>
<h3 id="HTML5-新增的语义化标签"><a href="#HTML5-新增的语义化标签" class="headerlink" title="HTML5 新增的语义化标签"></a>HTML5 新增的语义化标签</h3><ol>
<li><code>&lt;header&gt;</code>：头部标签</li>
<li><code>&lt;nav&gt;</code>：导航标签</li>
<li><code>&lt;article&gt;</code>：内容标签</li>
<li><code>&lt;section&gt;</code>：定义文档某个区域</li>
<li><code>&lt;aside&gt;</code>：侧边栏标签</li>
<li><code>&lt;fonter&gt;</code>：尾部标签</li>
<li><img src= "" data-lazy-src="img/HTML5%E6%96%B0%E5%A2%9E%E7%9A%84%E4%B8%80%E4%BA%9B%E6%A0%87%E7%AD%BE.jpg" alt=""></li>
<li>注意：<ul>
<li>这种语义化标准主要是针对搜索引擎的</li>
<li>这些新标签页面中可以使用多次</li>
<li>在 IE9 中，需要吧这些元素转换为块级元素</li>
<li>其实，我们移动端更喜欢使用这些标签</li>
<li>HTML5还增加了很多其他标签</li>
</ul>
</li>
</ol>
<h3 id="HTML5-新增的多媒体标签"><a href="#HTML5-新增的多媒体标签" class="headerlink" title="HTML5 新增的多媒体标签"></a>HTML5 新增的多媒体标签</h3><ol>
<li>新增的多媒体标签主要包含两个：<ol>
<li>音频：<code>&lt;audio&gt;</code></li>
<li>视频：<code>&lt;video&gt;</code></li>
<li>使用他们可以很方便的在页面中嵌入音频和视频，而不再去使用 flash 和其他浏览器插件</li>
</ol>
</li>
</ol>
<h4 id="视频-lt-videl-gt"><a href="#视频-lt-videl-gt" class="headerlink" title="视频&lt;videl&gt;"></a>视频<code>&lt;videl&gt;</code></h4><ol>
<li><p>当前<code>&lt;video&gt;</code> 元素支持三种视频格式：尽量使用MP4格式</p>
</li>
<li><p>MP4、WebM、Ogg</p>
</li>
<li><p>语法：</p>
</li>
<li><p>```html<br><video src="文件地址" controls="controls"></video></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">| 5.       | 属性                                 | 值                                                        | 描述 |</span><br><span class="line">| -------- | ------------------------------------ | --------------------------------------------------------- |</span><br><span class="line">| autoplay | autoplay                             | 视频就绪自动播放（谷歌浏览器需要muted）来解决自动播放问题 |</span><br><span class="line">| controls | controls                             | 设置播放器播放控件                                        |</span><br><span class="line">| width    | pixels（像素）                       | 设置播放器宽度                                            |</span><br><span class="line">| height   | pixels(像素)                         | 设置播放器高度                                            |</span><br><span class="line">| loop     | loop                                 | 播放完是否继续播放该视频，循环播放                        |</span><br><span class="line">| preload  | auto(预先加载视频)none(不应加载视频) | 规定是否预加载视频（如果有了autoplay，就忽略该属性）      |</span><br><span class="line">| src      | url                                  | 视频URL地址                                               |</span><br><span class="line">| poster   | lmgurl                               | 加载等待的画面图片                                        |</span><br><span class="line">| muted    | muted                                | 静音播放                                                  |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">#### 音频`&lt;audio&gt;`</span><br><span class="line"></span><br><span class="line">1. 当前`&lt;audio&gt;` 元素支持三种音频格式 MP3、wav、Ogg</span><br><span class="line"></span><br><span class="line">2. 语法：</span><br><span class="line"></span><br><span class="line">3. ```html</span><br><span class="line">   &lt;audio src=&quot;文件地址&quot; controls=&quot;controls&quot;&gt;</span><br></pre></td></tr></table></figure>
</li>
<li><p>```css<br><audio controls="controls"></p>
<pre><code>&lt;source src=&quot;happy.mp3&quot; type=&quot;audio/mpeg&quot;&gt;
&lt;source src=&quot;happy.ogg&quot; type=&quot;audio/ogg&quot;&gt;
</code></pre><p>&lt;/audio&gt;</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">| 5.       | 属性     | 值                                             | 描述 |</span><br><span class="line">| -------- | -------- | ---------------------------------------------- |</span><br><span class="line">| autoplay | autoplay | 如果出现该属性，则音频在就绪后马上播放         |</span><br><span class="line">| controls | controls | 如果出现该属性，则向用户显示控件，比如播放按钮 |</span><br><span class="line">| loop     | loop     | 如果出现该属性，则每当音频结束时重新开始播放   |</span><br><span class="line">| src      | url      | 要播放的音频的URL                              |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">6. 谷歌浏览器吧音频和视频自动播放禁止了，加controls属性就可自动播放了</span><br><span class="line"></span><br><span class="line">#### 多媒体标签总结</span><br><span class="line"></span><br><span class="line">1. 音频标签和视频标签使用方式基本一致</span><br><span class="line">2. 浏览器支持情况不同</span><br><span class="line">3. 谷歌浏览器吧音频和视频自动播放禁止了</span><br><span class="line">4. 我们可以给视频标签添加 muted 属性来静音播放视频，音频不可以（可以通过JavaScript 解决）</span><br><span class="line">5. 视频标签是重点，我们经常设置自动播放，不适用controls控件，循环和设置大小属性</span><br><span class="line"></span><br><span class="line">### HTML5新增的 input 类型</span><br><span class="line"></span><br><span class="line">| 1.            | 属性值                      | 说明 |</span><br><span class="line">| ------------- | --------------------------- |</span><br><span class="line">| type=“email”  | 限制用户输入必须为Email类型 |</span><br><span class="line">| type=“url”    | 限制用户输入必须为URL类型   |</span><br><span class="line">| type=“data”   | 显示用户输入必须为日期类型  |</span><br><span class="line">| type=“month”  | 限制用户输入必须为月类型    |</span><br><span class="line">| type=“week”   | 限制用户输入必须为周类型    |</span><br><span class="line">| type=“number” | 限制用户输入必须为数字类型  |</span><br><span class="line">| type=“tel”    | 手机号码                    |</span><br><span class="line">| type=“search” | 搜索框                      |</span><br><span class="line">| type=“color”  | 生成一个颜色选择表单        |</span><br><span class="line">| type=“time”   | 限制用户输入必须为时间类型  |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">2. 验证的时候必须添加form表单域</span><br><span class="line"></span><br><span class="line">3. 当我们点击提交按钮可以验证表单</span><br><span class="line"></span><br><span class="line">4. 重点记住：number 、tel、 search 这三个</span><br><span class="line"></span><br><span class="line">### HTML5 新增的表单属性</span><br><span class="line"></span><br><span class="line">| 1.           | 属性      | 值                                                                                                                                                                                         | 说明 |</span><br><span class="line">| ------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |</span><br><span class="line">| required     | required  | 表单拥有该属性表示其内容不能为空，必填                                                                                                                                                     |</span><br><span class="line">| placeholder  | 提示文本  | 表单的提示信息，存在默认值将不显示                                                                                                                                                         |</span><br><span class="line">| autofocus    | autofocus | 聚焦到指定表单自动聚焦睡醒，页面加载完成自动                                                                                                                                               |</span><br><span class="line">| autocomplete | off / on  | 当用户在字段开始键入时，浏览器基于之前键入过的值，应该显示出在字段中填写的选项。默认已经打开，如 autocomplete=“on”，关闭autocomplete=”off”，需要放在表单内，同时加上name属性。同时成功提交 |</span><br><span class="line">| munltiple    | multiple  | 可以多选文件提交                                                                                                                                                                           |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">2. 可以通过以下设置方式修改placeholder里面的字体颜色：</span><br><span class="line"></span><br><span class="line">3. ```css</span><br><span class="line">   /* 通过伪元素来指定文本框默认的颜色 */</span><br><span class="line">   input::placeholder&#123;</span><br><span class="line">       color:pink</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p>4.</p>
<p>5.</p>
<h2 id="CSS3-的新特性"><a href="#CSS3-的新特性" class="headerlink" title="CSS3 的新特性"></a>CSS3 的新特性</h2><ol>
<li>新增的CSS3特性有兼容性问题，ie9+才支持</li>
<li>移动端支持优于 PC 端</li>
<li>不断改进中</li>
<li>应用相对广泛</li>
<li>现阶段主要学习：新增选择器和盒子模型以及其他特性</li>
</ol>
<h3 id="属性选择器"><a href="#属性选择器" class="headerlink" title="属性选择器"></a>属性选择器</h3><ol>
<li>属性选择器可以根据元素特定属性的来选择元素，这样就可以不用借助于类或者id选择器</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>选择器</th>
<th>简介</th>
</tr>
</thead>
<tbody>
<tr>
<td>E[att]</td>
<td>选择具有 att 属性的 E 元素</td>
</tr>
<tr>
<td>E[att=“val”]</td>
<td>选择具有 att 属性且 属性值等于 val 的 E 元素</td>
</tr>
<tr>
<td>E[att^=“val”]</td>
<td>匹配具有 att 属性且值以val 开头的 E 元素</td>
</tr>
<tr>
<td>E[att$=“val”]</td>
<td>匹配具有 att 属性且值以 val 结尾的 E 元素</td>
</tr>
<tr>
<td>E[att*=“val”]</td>
<td>匹配具有att属性且值中含有val的 E 元素</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><p>```css<br><style><br>/<em> 选择input标签中有value属性的元素 </em>/<br> input[value] {</p>
<pre><code>color:red;
</code></pre><p>}<br>/<em> 属性选择器还可以选择属性=值的某些元素，s双引号可以加也可不加 重点 </em>/<br> input[type=”text”]{</p>
<pre><code>color:red;
</code></pre><p>}<br>&lt;/style&gt;<br><input type="text" value="请输入用户名"><br><input type="password"></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">4. 注意：</span><br><span class="line"></span><br><span class="line">   - 类选择器、属性选择器、伪类选择器、权重为10</span><br><span class="line"></span><br><span class="line">### 结构伪类选择器</span><br><span class="line"></span><br><span class="line">1. 结构伪类选择器主要根据文档结构来选择器元素，常用于根据父级选择器里面的子元素</span><br><span class="line"></span><br><span class="line">| 2.               | 选择符                        | 简介 |</span><br><span class="line">| ---------------- | ----------------------------- |</span><br><span class="line">| E:first-child    | 匹配父元素中的第一个子元素 E  |</span><br><span class="line">| E:last-child     | 匹配父元素中最后一个 E 元素   |</span><br><span class="line">| E:nth-child(n)   | 匹配父元素中的第 n 个子元素 E |</span><br><span class="line">| E:first-of-type  | 指定类型 E 的第一个           |</span><br><span class="line">| E:last-of-type   | 指定类型 E  的最后一个        |</span><br><span class="line">| E:nth-of-type(n) | 指定类型 E 的第 n 个          |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">3. ```css</span><br><span class="line">   /* 选择 ul 里面的第一个孩子 小 li  */</span><br><span class="line">   ul li:first-child &#123;</span><br><span class="line">       background-color:#fff;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
<li><p>nth-child（n）选择某个父元素的一个或多个特定的子元素</p>
<ul>
<li>n 可以是数字，关键字和公式</li>
<li>n 如果是数字，就是选择第 n 个子元素，里面数字从1开始…</li>
<li>n 可以是关键字：even 偶数，odd 奇数</li>
<li>n 可以是公式：常见的工农公式如下（如果 n 是公式，则从0开始计算，但是第 0 个元素或者超出了元素的个数会被忽略）</li>
</ul>
</li>
<li><p>```css<br>ul li:nth-child()</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">6. 要选择所有，必须是 n</span><br><span class="line"></span><br><span class="line">7. ```css</span><br><span class="line">   ol li:nth-child(n)&#123;</span><br><span class="line">       background-color:pink;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>8.</th>
<th>公式</th>
<th>取值</th>
</tr>
</thead>
<tbody>
<tr>
<td>2n</td>
<td>偶数</td>
</tr>
<tr>
<td>2n+1</td>
<td>奇数</td>
</tr>
<tr>
<td>5n</td>
<td>5    10  15…</td>
</tr>
<tr>
<td>n+5</td>
<td>从第5个开始（包含第5个）到最后</td>
</tr>
<tr>
<td>-n+5</td>
<td>前5个（包含第5个）…</td>
</tr>
</tbody>
</table>
</div>
<h4 id="nth-child-的执行规则"><a href="#nth-child-的执行规则" class="headerlink" title="nth-child 的执行规则"></a>nth-child 的执行规则</h4><ol>
<li>nth-child 会吧所有的盒子都排列序号</li>
<li>执行的时候首先看 ：nth-child（1）之后回去看 ：前的标签</li>
</ol>
<h4 id="nth-of-type-的执行规则"><a href="#nth-of-type-的执行规则" class="headerlink" title="nth-of-type 的执行规则"></a>nth-of-type 的执行规则</h4><ol>
<li>nth-of-type 会把指定元素的盒子排列序号</li>
<li>执行的时候首先看  ：nth-of-type（1）之后回去看 ：前的标签</li>
</ol>
<h4 id="区别："><a href="#区别：" class="headerlink" title="区别："></a>区别：</h4><ol>
<li>nth-child 对父元素里面所有孩子排序选择（序号是固定的）先找到第 n 个孩子，然后看看是否和 E 匹配</li>
<li>nth-of-type 对父元素里面指定子元素进行排序选择。先去匹配 E，然后在根据 E 找到第 n 个孩子</li>
</ol>
<h4 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h4><ol>
<li>结构伪类选择器一般用于选择器父级里面的第几个孩子</li>
<li>nth-child 对父元素里面所有孩子排序选择（序号是固定的）先找到第 n 个孩子，然后看看是否和 E 匹配</li>
<li>nth-of-type 对父元素里面指定子元素进行排序选择，先去匹配 E ，然后在根据 E 找到第 n 个孩子</li>
<li>关于 nth-child（n）我们要知道 n 是从0 开始计算的，要记住常用的公式</li>
<li>如果是无序列表，我们肯定用 nth-child 更多</li>
<li>类选择器、属性选择器、伪类选择器、权重为10</li>
</ol>
<h3 id="伪元素选择器-重点"><a href="#伪元素选择器-重点" class="headerlink" title="伪元素选择器(重点)"></a>伪元素选择器(重点)</h3><ol>
<li>伪元素选择器可以帮助我们利用 CSS 创建新标签元素，而不需要HTML标签，从而简化HTML结构</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>选择符</th>
<th>简介</th>
</tr>
</thead>
<tbody>
<tr>
<td>::before</td>
<td>在元素内部的前面插入内容</td>
</tr>
<tr>
<td>::after</td>
<td>在元素内部的后面插入内容</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><p>注意：</p>
<ul>
<li>before 和 after 创建一个元素，但是属于行内元素</li>
<li>新创建的这个元素在文档树中是找不到的，所以我们称为伪元素</li>
<li>语法：element::before{}</li>
<li>before 和 after 必须有 content 属性</li>
<li>before 在父元素内容的前面创建元素，after 在父元素内容的后面插入元素</li>
<li>伪元素选择器和标签选择器一样，权重为 1</li>
<li>content：‘ ’; 是必须要写的</li>
</ul>
</li>
<li><p>例如：</p>
<ul>
<li><p>```css<br>div::before{</p>
<pre><code>/* 这个 content是必须要写的 ，不然before 不起作用,可以先空着*/
content:&#39;&#39;;
</code></pre><p>}</p>
<p><div>是</div></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">#### 使用场景</span><br><span class="line"></span><br><span class="line">1. 伪元素字体图标，使用伪元素+定位来做 子绝父相</span><br><span class="line"></span><br><span class="line">2. 加了绝对定位的盒子可以不转行内块元素直接使用宽高背景</span><br><span class="line"></span><br><span class="line">3. 想要加伪元素中间不能有空格</span><br><span class="line"></span><br><span class="line">4. ```css</span><br><span class="line">   .tudou:hove::before&#123;</span><br><span class="line">       display:block;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
<li><p>伪元素清除浮动</p>
<ul>
<li><p>第一种</p>
<ol>
<li><p>伪元素会自动生成一个盒子</p>
</li>
<li><p>伪元素必写 content:””; 属性</p>
</li>
<li><p>display:block；插入的元素必须是块级</p>
</li>
<li><p>高度为0</p>
</li>
<li><p>clear:both；清除浮动</p>
</li>
<li><p>visibility：hidden；</p>
</li>
<li><p>原理:为额外标签法的升级</p>
</li>
<li><p>```css<br>.clearfix::after {</p>
<pre><code>content:&quot;&quot;;
display:block;
height:0;
clear:both;
visibility:hidden;
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">  9.</span><br><span class="line"></span><br><span class="line">- 第二种</span><br><span class="line"></span><br><span class="line">  1. ```css</span><br><span class="line">     .chlearfix::before,.clearfix::after &#123;</span><br><span class="line">         content:&quot;&quot;;</span><br><span class="line">         display:table;</span><br><span class="line">     &#125;</span><br><span class="line">     .clearfix:after &#123;</span><br><span class="line">         clear:both;</span><br><span class="line">     &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p>2.</p>
</li>
</ul>
</li>
</ol>
<h3 id="CSS-盒子模型"><a href="#CSS-盒子模型" class="headerlink" title="CSS 盒子模型"></a>CSS 盒子模型</h3><ol>
<li><p>CSS3 中可以通过box-sizing 来制定盒子模型</p>
</li>
<li><p>有2个值：即可指定为content-box、border-box、</p>
</li>
<li><p>这样我们计算盒子大小的方式就发生了改变</p>
</li>
<li><p>可以以分为两种情况：</p>
<ol>
<li>box-sizing:content-box 盒子大小为 width + padding + border (以前默认的)</li>
<li>box-sizing：border-box 盒子大小为 width 这种方式，盒子大小就是你写的宽度,不管怎样加 border 加 padding 都不会撑大盒子</li>
</ol>
</li>
<li><p>如果盒子模型我们改为了box-sizing：border-box，那padding 和 border 就不会撑大盒子了（前提 padding 和 border 不会超过 width 宽度）</p>
</li>
<li><p>```css<br>*{</p>
<pre><code>margin:0；
padding:0;
/* 不管怎样写都不会撑大盒子 */
box-sizing:border-box;
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">### CSS其他特性</span><br><span class="line"></span><br><span class="line">#### 图片变模糊</span><br><span class="line"></span><br><span class="line">1. CSS3滤镜 filter：</span><br><span class="line"></span><br><span class="line">2. filter CSS属性将模糊或颜色偏移等图形效果应用于 元素</span><br><span class="line"></span><br><span class="line">3. filter:函数()；例如：filter：blur(5px);</span><br><span class="line"></span><br><span class="line">4. blur 模糊处理数值越大越模糊</span><br><span class="line"></span><br><span class="line">5. ```css</span><br><span class="line">   img &#123;</span><br><span class="line">       /* blur 是一个函数 小括号里面数值越大 图片越模糊 */</span><br><span class="line">       filter:blur(15px);</span><br><span class="line">   &#125;</span><br><span class="line">   img:hover&#123;</span><br><span class="line">       filter:blur(0px)</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p>6.</p>
<h4 id="计算盒子宽度-width-calc-函数"><a href="#计算盒子宽度-width-calc-函数" class="headerlink" title="计算盒子宽度 width:calc 函数"></a>计算盒子宽度 width:calc 函数</h4><ol>
<li><p>CSS3 calc 函数：</p>
</li>
<li><p>calc（）此 CSS 函数让你在声明 CSS 属性值时执行一些计算</p>
</li>
<li><p>语法：</p>
</li>
<li><p>```css<br>width:calc(100% -80px);</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">5. 括号里面可以使用 + - * / 来进行计算</span><br><span class="line"></span><br><span class="line">6. 需求：我们的子盒子宽度永远比父盒子小 30像素</span><br><span class="line"></span><br><span class="line">7. ```css</span><br><span class="line">   .son&#123;</span><br><span class="line">       /* 宽度百分之百，不管盒子如何变化，都要减30像素 */</span><br><span class="line">   	width:calc(100% - 30px);</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h4 id="CSS3-过渡（重点）"><a href="#CSS3-过渡（重点）" class="headerlink" title="CSS3 过渡（重点）"></a>CSS3 过渡（重点）</h4><ol>
<li><p>过渡（transition）是 CSS3 中具有颠覆性的特征之一，我们在不使用 flash 动画 或 JavaScript 的情况下</p>
</li>
<li><p>当元素从一种样式变换为另一种样式时为元素添加效果</p>
</li>
<li><p>过渡动画：</p>
<ul>
<li>是从一个状态 渐渐的过渡到另外一个状态</li>
<li>虽然 低版本浏览器不支持（ie9）以下版本，但不会影响页面布局</li>
</ul>
</li>
<li><p>经常和 ：hover 一起搭配使用</p>
</li>
<li><p>语法：</p>
<ul>
<li>```css<br>transition:要过渡的属性、花费时间、运动曲线 何时开始；<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">6. 属性：</span><br><span class="line"></span><br><span class="line">   - 要想变化的 CSS 属性，宽高 背景颜色内外边距都可以，</span><br><span class="line">   - 如果想要所有属性都变化过渡。写一个 all 就可以</span><br><span class="line"></span><br><span class="line">7. 花费时间：</span><br><span class="line"></span><br><span class="line">   - 单位是秒（必须写单位）比如0.5s</span><br><span class="line"></span><br><span class="line">8. 运动曲线：默认是ease（可以省略）</span><br><span class="line"></span><br><span class="line">9. 何时开始：</span><br><span class="line"></span><br><span class="line">   - 单位是秒（必须写单位）可以设置延迟触发时间。</span><br><span class="line">   - 默认0 s（可以省略）</span><br><span class="line">   - 过渡口诀：过渡写到本身上，谁做过渡给谁加 transition</span><br><span class="line"></span><br><span class="line">#### 2D转换</span><br><span class="line"></span><br><span class="line">1. 转换（transform）是CSS3中最具颠覆性的特征之一，可实现元素的位移、旋转、缩放等效果</span><br><span class="line">2. 转换（transform）可理解为变形</span><br><span class="line">   - 移动：translate</span><br><span class="line">   - 旋转：rotate</span><br><span class="line">   - 缩放：scale</span><br><span class="line">3. 2D 转换是改变标签在二维平面上的位置和形状的一种技术，先来学习二维坐标系</span><br><span class="line">   - X轴越往右边越大</span><br><span class="line">   - Y轴越往下越大</span><br><span class="line">   - 左上角为0点</span><br><span class="line">4. 2D移动是2D转换里面的一种功能，可以改变元素在页面中的位置类似定位</span><br><span class="line"></span><br><span class="line">##### 移动语法</span><br><span class="line"></span><br><span class="line">1. 语法：</span><br><span class="line"></span><br><span class="line">   - transform:translate(x,y)；或者分开写</span><br><span class="line">   - transform：translateX(n)；</span><br><span class="line">   - transform：translateY(n)；</span><br><span class="line"></span><br><span class="line">2. ```css</span><br><span class="line">   /* X 就是 X轴移动，Y 就是 Y轴移动 */</span><br><span class="line">   transform:translate(X,Y);</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
<li><p>X轴就是以页面左上角为0点，向右越来越大</p>
</li>
<li><p>Y轴就是以页面左上角为0点，向下越来越大</p>
</li>
<li><p>如果只移动一个轴，另一个轴不能省略，可写0</p>
</li>
<li><p>```css<br>/<em> 向 X轴移动，Y轴不移动 </em>/<br>transform:translate(x,0);</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">7. 也可以分开写</span><br><span class="line"></span><br><span class="line">8. ```css</span><br><span class="line">   /* 向X轴移动 100px */</span><br><span class="line">   transform:translateX(100px);</span><br></pre></td></tr></table></figure>
</li>
<li><p>盒子垂直居中</p>
</li>
<li><p>```html</p>
<p>p{<br>-50%,就是往反方向走自己高度的一般<br>transform:translate(-50%，-50%)<br>}</p>
<p><div></p>
<pre><code>&lt;p&gt;
&lt;/p&gt;
</code></pre><p>&lt;/div&gt;</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">11.</span><br><span class="line"></span><br><span class="line">###### 重点</span><br><span class="line"></span><br><span class="line">1. 定义了  2D 转换中的移动，沿着 X 和 Y 轴移动元素</span><br><span class="line">2. translate：最大的优点：不会影响到其他元素的位置</span><br><span class="line">3. translate：中的百分比单位是相对于自身元素的translate：（50%，50%）；</span><br><span class="line">4. 对行内标签没有效果</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">##### 2D 旋转 rotate</span><br><span class="line"></span><br><span class="line">1. 2D 旋转指的是让元素在2维平面内顺时针旋转或者逆时针旋转</span><br><span class="line"></span><br><span class="line">###### 语法</span><br><span class="line"></span><br><span class="line">1. ```css</span><br><span class="line">   transform:rotate(度数)</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h6 id="重点"><a href="#重点" class="headerlink" title="重点"></a>重点</h6><ol>
<li>rotate 里面跟度数，单位是deg 比如 rotate（45deg）</li>
<li>角度为正时，顺时针，负时，为逆时针</li>
<li>默认旋转的重心点是元素的中心点</li>
</ol>
<h6 id="2D转换中心点transform-orign"><a href="#2D转换中心点transform-orign" class="headerlink" title="2D转换中心点transform-orign"></a>2D转换中心点transform-orign</h6><ol>
<li><p>我们可以设置元素转换的中心点</p>
</li>
<li><p>语法：</p>
</li>
<li><p>```css<br>transform-origin:x y;</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">###### 重点</span><br><span class="line"></span><br><span class="line">1. 注意后面的参数 x 和 y 用空格隔开</span><br><span class="line">2. x y 默认转换的中心点是元素的中心点（50% 50%）</span><br><span class="line">3. 还可以给x y 设置像素 或者方位名词 (top bottom left right center)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">##### 缩放</span><br><span class="line"></span><br><span class="line">1. 缩放、顾名思义、可以放大和缩小、只要给元素添加上了这个属性，就能控制它放大还是缩小</span><br><span class="line"></span><br><span class="line">###### 语法</span><br><span class="line"></span><br><span class="line">1. ```css</span><br><span class="line">   transform:scale(x,y);</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h6 id="注意"><a href="#注意" class="headerlink" title="注意"></a>注意</h6><ol>
<li>注意其中的x 和 y 用 逗号分隔</li>
<li>transform:scale(1,1) ：宽和高都放大一倍，相对与没有放大</li>
<li>transform:scale(2,2)：宽和高都放大了两倍</li>
<li>transform:scale(2)：只写一个参数，第二个参数则是和第一个参数一样，相当于scale(2,2)</li>
<li>transform:scale(0.2,0.2)：缩小</li>
<li>sacle缩放最大的优势：可以设置转换中心点缩放，默认以中心点缩放的，而且不影响其他盒子</li>
</ol>
<h6 id="scale-的优势："><a href="#scale-的优势：" class="headerlink" title="scale 的优势："></a>scale 的优势：</h6><ol>
<li>不会影响到其他盒子，而且可以设置缩放的中心点</li>
</ol>
<h6 id="2D转换综合写法css"><a href="#2D转换综合写法css" class="headerlink" title="2D转换综合写法css"></a>2D转换综合写法css</h6><ol>
<li><p>注意：</p>
<ul>
<li><p>同时使用多个转换，其格式为：</p>
</li>
<li><p>```css<br>transform:translate()rotate()scale()…等</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">   - 其顺序会影响转换的效果（先旋转会改变坐标轴方向）</span><br><span class="line"></span><br><span class="line">   - 当我们同时有位移和其他属性的时候，记得要将位移方到最前</span><br><span class="line"></span><br><span class="line">#### 动画</span><br><span class="line"></span><br><span class="line">1. 动画（animation）是CSS3 中具有颠覆性的特证之一，可通过设置多个节点来精确控制一个或一组动画</span><br><span class="line"></span><br><span class="line">##### 制作动画分两步</span><br><span class="line"></span><br><span class="line">1. 先定义动画</span><br><span class="line"></span><br><span class="line">2. 在使用（调用）动画</span><br><span class="line"></span><br><span class="line">3. 用 keyframes 定义动画（类似定义类选择器）</span><br><span class="line"></span><br><span class="line">4. ```css</span><br><span class="line">   @keyframes 动画名称 &#123;</span><br><span class="line">       0%&#123;</span><br><span class="line">           width:100px;</span><br><span class="line">       &#125;</span><br><span class="line">       100%&#123;</span><br><span class="line">           width:200px;</span><br><span class="line">       &#125;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
<li><p>元素使用动画</p>
</li>
<li><p>```css<br>div{</p>
<pre><code>width:200px;
height:200px;
backgroound-color:aqua;
margin:100px auto;
/* 调用动画 */
animateion-name:动画名称；
/* 持续时间 */
 animation-duration:持续时间；
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">7. 动画常用属性，找文档</span><br><span class="line"></span><br><span class="line">8. animation-iteration-count：infinite</span><br><span class="line"></span><br><span class="line">   - infinite 无限，count 次数</span><br><span class="line"></span><br><span class="line">9. animation-direction：alternate；</span><br><span class="line"></span><br><span class="line">   - 是否反方向播放</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">##### 动画序列</span><br><span class="line"></span><br><span class="line">1. 0% 是动画的开始，100%是动画的完成，这样的规则就是动画序列</span><br><span class="line">2. 在 @keyframes 中规定某项 CSS 样式，就能创建有当前样式逐渐改为新样式的动画效果</span><br><span class="line">3. 动画是使元素从一种样式逐渐变化为另一种样式的效果，您可以改变任意多的样式任意多的次数</span><br><span class="line">4. 请用百分比来规定变化发生的时间，或用关键词 “from” 和 “to” 和100%。</span><br><span class="line"></span><br><span class="line">##### 动画简写属性</span><br><span class="line"></span><br><span class="line">1. animation：动画名称持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或结束的状态</span><br><span class="line">2. 简写属性里面不包含 animation-play-state</span><br><span class="line">3. 暂停动画：animation-play-state：puased；经常和鼠标经过等配合使用</span><br><span class="line">4. 想要动画走回来。而不是直接跳回来：animation-direction：alternate</span><br><span class="line">5. 盒子动画结束后，停在结束位置：animation-fill-mode：forwards</span><br><span class="line"></span><br><span class="line">##### 速度曲线细节</span><br><span class="line"></span><br><span class="line">1. animation-timing-function：规定曲线的动画速度，默认是“ease”</span><br><span class="line"></span><br><span class="line">| 2.          | 值                                           | 描述 |</span><br><span class="line">| ----------- | -------------------------------------------- |</span><br><span class="line">| linear      | 动画从头到尾的速度是相同的，匀速             |</span><br><span class="line">| ease        | 默认。动画以低速开始，然后加快，在结束前变慢 |</span><br><span class="line">| ease-in     | 动画以低速开始                               |</span><br><span class="line">| ease-out    | 动画以低速开始                               |</span><br><span class="line">| ease-in-out | 动画以低速开始和结束                         |</span><br><span class="line">| steps（）   | 指定了时间函数中的间隔数量（步长）           |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">3. steps 就是分几步来完成我们的动画，有了 steps 就不要写 ease 或者 linear 了</span><br><span class="line"></span><br><span class="line">#### 3D转换</span><br><span class="line"></span><br><span class="line">1. 我们生活的环境是3D的，照片就是3D物体在2D平面呈现的例子</span><br><span class="line"></span><br><span class="line">##### 有什么特点</span><br><span class="line"></span><br><span class="line">1. 近大远小</span><br><span class="line">2. 物体后面遮挡不可见</span><br><span class="line"></span><br><span class="line">##### 三维坐标系</span><br><span class="line"></span><br><span class="line">1. X轴：水平向右</span><br><span class="line">   - 注意：x 右边是正值，左边是负值</span><br><span class="line">2. Y轴：垂直向下</span><br><span class="line">   - 注意：y 下面是正值，上面是负值</span><br><span class="line">3. Z轴：垂直屏幕</span><br><span class="line">   - 注意：往外面是正值，往里面是负值</span><br><span class="line"></span><br><span class="line">##### 主要知识点</span><br><span class="line"></span><br><span class="line">1. 3D位移：translate3d（x,y,z）</span><br><span class="line">2. 3D旋转：rotate3d（x,y,z）</span><br><span class="line">3. 透视：perspective</span><br><span class="line">4. 3D 呈现 transfrom-style</span><br><span class="line"></span><br><span class="line">##### 3D移动 translate 3d</span><br><span class="line"></span><br><span class="line">1. 3D移动在2D移动的基础上多加了一个可移动的方向，就是 Z 轴</span><br><span class="line">2. translform：translateX（100px）：仅仅是在X轴上移动</span><br><span class="line">3. translform：translateY（100px）：仅仅是在Y轴上移动</span><br><span class="line">4. translform：translateZ（100px）：仅仅是在Z轴上移动,（注意：translateZ一般用px单位）</span><br><span class="line">5. translform：translate3d（x,y,z）：其中x、y、z 分别指的是要移动轴方向的距离</span><br><span class="line"></span><br><span class="line">##### 透视</span><br><span class="line"></span><br><span class="line">1. perspective</span><br><span class="line">2. 在 2D 平面产生近大远小视觉立体，但是只是效果二维的</span><br><span class="line">   - 如果想要在网页产生3D效果，需要透视（理解成3D物体投影在2D平面内）</span><br><span class="line">   - 模拟人类的视觉位置，可人为安排一只眼睛去看</span><br><span class="line">   - 透视我们也称为视距：视距就是人的眼睛到屏幕的距离</span><br><span class="line">   - 距离视觉点越近：视距就是人的眼睛到屏幕的距离</span><br><span class="line">   - 距离视觉点越近的在电脑平面成像就越大，越远成像越小</span><br><span class="line">   - 透视的单位是像素</span><br><span class="line">3. 透视写在被观察元素的父盒子上面的</span><br><span class="line">   - d：就是视距，视距就是一个距离人的眼睛到屏幕的距离</span><br><span class="line">   - z：就是 z 轴，物体距离屏幕的距离，z轴越大（正值）我们看到的物体就越大</span><br><span class="line"></span><br><span class="line">#### 3D旋转 rotate3d</span><br><span class="line"></span><br><span class="line">1. 3D 旋转指可以让阿匀速在三维平面内沿着X轴，Y轴，Z轴或者自定义进行旋转</span><br><span class="line">2. 语法：</span><br><span class="line">   - transform:rotateX(45deg)：沿着X轴正方向旋转45度</span><br><span class="line">   - transform:rotateY(45deg)：沿着Y轴正方向旋转45度</span><br><span class="line">   - transform:rotateZ(45deg)：沿着Z轴正方向旋转45度</span><br><span class="line">   - transform:rotate3d(x,y,deg)：沿着自定义轴旋转 deg 为角度（了解即可）</span><br><span class="line">3. 对于元素旋转的方向的判断 我们需要先学习一个左手准则</span><br><span class="line">4. 左手准则</span><br><span class="line">   - 左手的手拇指向X轴的正方向</span><br><span class="line">   - 其余手指的弯曲方向就是该元素沿着X轴旋转方向</span><br><span class="line">   - 左手的手拇指指向Y轴的正方向</span><br><span class="line">   - 其余手指的弯曲方向就是该元素沿着y轴旋转的方向正值</span><br><span class="line">5. transform:rotate3d(x,y,z,deg)：沿着自定义轴旋转 deg 为角度（了解即可）</span><br><span class="line">6. xyz 是表示旋转轴的矢量，是表示么是否希望沿着该轴旋转，最后一个表示旋转的角度</span><br><span class="line">   - transform：rotate3d(1,0,0,45deg)就是沿着X轴旋转 45deg</span><br><span class="line">   - transform：rotate3d(1,1,0,45deg)就是沿着对角线旋转 45deg</span><br><span class="line"></span><br><span class="line">#### 3D呈现 transfrom-style</span><br><span class="line"></span><br><span class="line">1. 控制子元素是否开启三维立体环境</span><br><span class="line">2. transform-style：flat 子元素不开启 3d 立体空间，默认的</span><br><span class="line">3. transfrom-style：preserve-3d；子元素开启立体空间</span><br><span class="line">4. 代码写给父级，但是要影响的是子盒子</span><br><span class="line">5. 这个属性很重要</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">### 背景渐变</span><br><span class="line"></span><br><span class="line">#### 背景线性渐变</span><br><span class="line"></span><br><span class="line">1. ```css</span><br><span class="line">   background:linear-gradient(起始方向，颜色1，颜色2，...);</span><br><span class="line">   background:-webkit-linear-gradient(left,red,blue);</span><br><span class="line">   background:-webkit-linear-gradient(left top,red,blue)</span><br></pre></td></tr></table></figure>
</li>
<li><p>背景渐变必须添加 浏览器私有前缀，也就是 -webkit-</p>
</li>
<li><p>起始方向可以是：方位名词，或者 度数、如果省略默认就是 top</p>
</li>
<li><p>可以省略，省略后默认是 从上往下</p>
</li>
</ol>
<h2 id="广义的HTML-5"><a href="#广义的HTML-5" class="headerlink" title="广义的HTML 5"></a>广义的HTML 5</h2><ol>
<li>广义的 HTML5 是HTML5本身+CSS3+JavaScript</li>
<li>这个集合有时称为HTML5和朋友，通常缩写为 HTML5</li>
<li>虽然HTML5的一些特性仍然不被某些浏览器支持，但是他是一种发展趋势</li>
</ol>
<h1 id="浏览器私有前缀"><a href="#浏览器私有前缀" class="headerlink" title="浏览器私有前缀"></a>浏览器私有前缀</h1><ol>
<li><p>私有前缀</p>
<ul>
<li>-moz-：代表 firefox 浏览器私有属性</li>
<li>-ms-：代表 ie 浏览器私有属性</li>
<li>-webkit：代表 safari、chrome 私有属性</li>
<li>-o-：代表 Opera 私有属性</li>
</ul>
</li>
<li><p>提倡写法</p>
<ul>
<li>```css<br>-moz-border-radius:10px;<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">   -</span><br><span class="line"></span><br><span class="line"># 品优购项目</span><br><span class="line"></span><br><span class="line">## 页面内容</span><br><span class="line"></span><br><span class="line">1. 品优购项目规划</span><br><span class="line">2. 品优购首页制作</span><br><span class="line">3. 品优购列表页制作</span><br><span class="line">4. 品优购注册页制作</span><br><span class="line">5. 域名注册与网站上传</span><br><span class="line"></span><br><span class="line">## 网站制作流程</span><br><span class="line"></span><br><span class="line">1. 客户沟通</span><br><span class="line">2. 签订合同</span><br><span class="line">3. 预付定金，打死不退</span><br><span class="line">4. 初稿审核 美工：网页原型图、网页效果图</span><br><span class="line">5. 前台页面设计、后台功能开发</span><br><span class="line">6. 测试验收</span><br><span class="line">7. 上线培训</span><br><span class="line">8. 后期维护</span><br><span class="line"></span><br><span class="line">## 开发工具和技术栈</span><br><span class="line"></span><br><span class="line">1. 技术栈 HTML5+CSS3手动布局，大量使用H5新增的标签和样式</span><br><span class="line">2. 采取结构与样式相分离，模块化开发</span><br><span class="line">3. 属性书写顺序：</span><br><span class="line">   1. 布局定位属性：display / position / float / clear / visibility / overflow (建议 display 第一个写，毕竟关系到模式)</span><br><span class="line">   2. 自身属性：width margin border background</span><br><span class="line">   3. 文本属性：color / font / text0align</span><br><span class="line">   4. 其他属性（CSS3）：content / cursor</span><br><span class="line">4. common.css 公共样式里面包含 版心宽度、清除浮动、页面文字颜色等公共样式</span><br><span class="line">5. base.css 初始化 css 样式</span><br><span class="line"></span><br><span class="line">## 网站 TDK 三大标签 SEO 优化</span><br><span class="line"></span><br><span class="line">1. SEO（Search Engine Optiomization）汉译为搜索引擎优化，</span><br><span class="line">2. 是一种利用搜索引擎的规则提高网站在有关搜索引擎内自然排名的方式</span><br><span class="line">3. SEO 的目的是对网站进行深度的优化，从而帮助网站获取免费的流量</span><br><span class="line">4. 进而在搜索引擎上提升网站的排名，提高知名度</span><br><span class="line">5. 做项目网站的时候要符合 SEO 的规则，排名自然靠前</span><br><span class="line">6. 页面必须有三个标签用来符合 SEO 优化</span><br><span class="line">7. 三大标签：</span><br><span class="line">   - title</span><br><span class="line">   - description</span><br><span class="line">   - keywword</span><br><span class="line"></span><br><span class="line">### title 网站标题</span><br><span class="line"></span><br><span class="line">1. title 具有不可替代性，是搜索引擎了解网页的入口和对网页主题归属的最佳判断点</span><br><span class="line">2. 建议：网站名（产品名）-网站的介绍（尽量不要超过30个字）</span><br><span class="line"></span><br><span class="line">### description 网站说明</span><br><span class="line"></span><br><span class="line">1. 简要说明我们网站主要是做什么的</span><br><span class="line"></span><br><span class="line">2. 例如：</span><br><span class="line"></span><br><span class="line">3. ```html</span><br><span class="line">   &lt;meta name=&quot;description&quot; content=&quot;京东......&quot; /&gt;</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
</ol>
<h3 id="keywords-关键字"><a href="#keywords-关键字" class="headerlink" title="keywords 关键字"></a>keywords 关键字</h3><ol>
<li>keywords 是页面关键字，是搜素引擎的关注点之一</li>
<li>keywords 最好限制为6~8个关键词，关键词之间用英文逗号隔开，采用关键词1,关键词2 的形式</li>
</ol>
<h2 id="常用模块命名"><a href="#常用模块命名" class="headerlink" title="常用模块命名"></a>常用模块命名</h2><div class="table-container">
<table>
<thead>
<tr>
<th>1.</th>
<th>名称</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>快捷导航栏</td>
<td>shortcut</td>
</tr>
<tr>
<td>头部</td>
<td>header</td>
</tr>
<tr>
<td>标志</td>
<td>logo</td>
</tr>
<tr>
<td>购物车</td>
<td>shopcar</td>
</tr>
<tr>
<td>搜素</td>
<td>search</td>
</tr>
<tr>
<td>热点词</td>
<td>hotwrods</td>
</tr>
<tr>
<td>导航</td>
<td>nav</td>
</tr>
<tr>
<td>导航左侧</td>
<td>dropdown(包含 .dd  .dt)</td>
</tr>
<tr>
<td>导航右侧</td>
<td>navitems</td>
</tr>
<tr>
<td>页面底部</td>
<td>footer</td>
</tr>
<tr>
<td>页面底部服务模块</td>
<td>mod_service</td>
</tr>
<tr>
<td>页面底部帮助模块</td>
<td>mod_help</td>
</tr>
<tr>
<td>页面底部版权模块</td>
<td>mod_copyright</td>
</tr>
</tbody>
</table>
</div>
<h2 id="LOGO-SEO-优化"><a href="#LOGO-SEO-优化" class="headerlink" title="LOGO SEO 优化"></a>LOGO SEO 优化</h2><ol>
<li>logo 里面首先放一个 h1 标签，目的是为了 提权，告诉搜素引擎这地方很重要</li>
<li>h1 里面再放一个 链接，可以返回首页，吧 LOGO 的背景图给链接即可</li>
<li>为了搜素引擎收录我们，我们链接里面要放文字，（网站名称），但是文字不要显示出来<ul>
<li>方法1：text-indent 移到盒子外面（text-indent：-9999px）</li>
<li>然后 overflow：hidden，淘宝的做法</li>
<li>方法2：直接给 font-size：0；就看不到文字，京东做法</li>
</ul>
</li>
<li>最后给链接一个 title 属性，这样鼠标放到 LOGO 上 就可以看到提示文字了</li>
</ol>
<h2 id="轮播图"><a href="#轮播图" class="headerlink" title="轮播图"></a>轮播图</h2><ol>
<li>做轮播图,轮播图滚动时，是让 ul 来滚动的 不能直接插入图片，要放到小 li 中</li>
</ol>
<h1 id="服务器"><a href="#服务器" class="headerlink" title="服务器"></a>服务器</h1><ol>
<li>服务器就是一台电脑，因为我们主要是做网站的，所以我们主要使用 Web 服务器</li>
<li>服务器可以分为本地服务器和远程服务器</li>
<li>远程服务器是别的公司为我们提供了一台计算机</li>
<li>我们可以吧网站上传到远程服务器里面，别人就可以通过域名来访问我们的网站了</li>
</ol>
<h1 id="移动-Web-开发"><a href="#移动-Web-开发" class="headerlink" title="移动 Web 开发"></a>移动 Web 开发</h1><ol>
<li>总结：<ul>
<li>兼容移动端主流浏览器，处理Webkit 内核浏览器即可</li>
<li>手机屏幕尺寸不一样</li>
<li>调试方式：谷歌模拟手机模式、搭建本地Web服务器、Ip或域名<br>-</li>
</ul>
</li>
</ol>
<h1 id="视口"><a href="#视口" class="headerlink" title="视口"></a>视口</h1><ol>
<li>视口（viewport）就是浏览器显示页面内容的屏幕区域，视口可以分为布局视口，视觉视口和理想视口</li>
<li>布局视口 layout viewport</li>
<li>视觉视口 visual viewport，不会影响到布局视口</li>
<li>理想视口 ideal viewport，对设备来讲是最理想的视口尺寸，需要 meta视口标签</li>
</ol>
<h2 id="meta视口标签"><a href="#meta视口标签" class="headerlink" title="meta视口标签"></a>meta视口标签</h2><ol>
<li>```html<br><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">| 2.            | 属性                                                  | 解释说明 |</span><br><span class="line">| ------------- | ----------------------------------------------------- |</span><br><span class="line">| width         | 宽度设置的是viewport宽度，可以设置 device-width特殊值 |</span><br><span class="line">| initial       | 初始缩放比，大于0的数字                               |</span><br><span class="line">| maximum-scale | 最大缩放比，大于0的数字                               |</span><br><span class="line">| minimum-scale | 最小缩放比，大于0的数字                               |</span><br><span class="line">| user-scalable | 用户是否可以缩放，yes或no（1或0）                     |</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">3. 标准的viewport 设置</span><br><span class="line"></span><br><span class="line">   - 视口宽度和设备保持一致</span><br><span class="line">   - 视口的默认缩放比例1.0</span><br><span class="line">   - 不允许用户自行缩放</span><br><span class="line">   - 最大允许的缩放比例1.0</span><br><span class="line">   - 最小允许的缩放比1.0</span><br><span class="line"></span><br><span class="line">## 二倍图</span><br><span class="line"></span><br><span class="line">1. 物理像素 &amp;  物理像素比</span><br><span class="line"></span><br><span class="line">   - 物理像素点指的是屏幕显示的最小颗粒，是物理真实存在的，这是厂商在出厂时就设置好了，比如苹果6\7\8 是 750*1334</span><br><span class="line">   - 我们开发时候的 1px 不是一定等于 1个物理像素的</span><br><span class="line">   - PC端页面，1个 px 等于 1个物理像素的，但是移动端就不尽相同</span><br><span class="line">   - 一个 px 的能显示的物理像素点的个数，称为物理像素比或屏幕像素比</span><br><span class="line"></span><br><span class="line">2.</span><br><span class="line"></span><br><span class="line">3. 插入图片</span><br><span class="line"></span><br><span class="line">4. 一个 css 像素的图片，放到手机端里，会放大2倍</span><br><span class="line"></span><br><span class="line">5. 采取的是 放 一个 100*100 图片，然后手动吧这个图片缩小为 50 * 50（css像素）</span><br><span class="line"></span><br><span class="line">6. 我们准备的图片，比我们实际需要大小的 2 倍，就是 2 倍图</span><br><span class="line"></span><br><span class="line">7.</span><br><span class="line"></span><br><span class="line">8. 背景缩放 background-size</span><br><span class="line"></span><br><span class="line">   - background-size 属性规定背景图像的尺寸</span><br><span class="line">   - background-size：背景图片宽度 背景图片高度</span><br><span class="line"></span><br><span class="line">9. 单位：长度 | 百分比 | cover | contain;</span><br><span class="line"></span><br><span class="line">10. cover 吧背景图像扩展至足够大，以使背景图像完全覆盖背景区域</span><br><span class="line"></span><br><span class="line">11. contain 吧图像扩展至最大尺寸，以使其宽度和高度适应内容区域</span><br><span class="line"></span><br><span class="line">12. ```css</span><br><span class="line">    div&#123;</span><br><span class="line">        width:50px;</span><br><span class="line">        height:50px;</span><br><span class="line">        border:1px solid red;</span><br><span class="line">        background:url(img/dog.jpg) no-repeat;</span><br><span class="line">        background-size:50px 50px;</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h1 id="移动端主流方案"><a href="#移动端主流方案" class="headerlink" title="移动端主流方案"></a>移动端主流方案</h1><h2 id="单独制作移动端页面（主流）"><a href="#单独制作移动端页面（主流）" class="headerlink" title="单独制作移动端页面（主流）"></a>单独制作移动端页面（主流）</h2><ol>
<li>流式布局</li>
<li>flex 弹性布局（强烈推荐）</li>
<li>less+rem+媒体查询布局</li>
<li>混合布局</li>
</ol>
<h2 id="响应式页面兼容移动端（其次）"><a href="#响应式页面兼容移动端（其次）" class="headerlink" title="响应式页面兼容移动端（其次）"></a>响应式页面兼容移动端（其次）</h2><ol>
<li>媒体查询</li>
<li>bootstarp</li>
</ol>
<h2 id="CSS初始化"><a href="#CSS初始化" class="headerlink" title="CSS初始化"></a>CSS初始化</h2><h3 id="移动端CSS初始化推荐使用-normalize-css"><a href="#移动端CSS初始化推荐使用-normalize-css" class="headerlink" title="移动端CSS初始化推荐使用 normalize.css"></a>移动端CSS初始化推荐使用 normalize.css</h3><ol>
<li>Normalize.css：保护了有价值的默认值</li>
<li>官网地址：<a target="_blank" rel="noopener" href="http://necolas.github.io/normalize.css/">http://necolas.github.io/normalize.css/</a></li>
<li>1</li>
</ol>
<h2 id="CSS3的盒子模型"><a href="#CSS3的盒子模型" class="headerlink" title="CSS3的盒子模型"></a>CSS3的盒子模型</h2><h3 id="CSS3的盒子模型-1"><a href="#CSS3的盒子模型-1" class="headerlink" title="CSS3的盒子模型"></a>CSS3的盒子模型</h3><ol>
<li>box-sizing：border-box；</li>
<li>有了这句话，就会让盒变成 CSS3  的盒子模型</li>
<li>padding 和 border 不会在撑大盒子了<br>4.</li>
</ol>
<h3 id="传统的-盒子模型"><a href="#传统的-盒子模型" class="headerlink" title="传统的 盒子模型"></a>传统的 盒子模型</h3><ol>
<li>box-sizing：content-box；</li>
</ol>
<h3 id="区别"><a href="#区别" class="headerlink" title="区别"></a>区别</h3><ol>
<li>移动端可以全部CSS3 盒子模型</li>
<li>PC 端如果完全需要兼容，我们就用传统模式，如不需要考虑兼容性，可选择 CSS3 盒子模型</li>
</ol>
<h3 id="特殊样式"><a href="#特殊样式" class="headerlink" title="特殊样式"></a>特殊样式</h3><ol>
<li>css3 盒子模型<ul>
<li>box-sizing：border-box；</li>
<li>webkit-box-sizing：border-box；</li>
</ul>
</li>
<li>点击高亮我们需要清除样式<ul>
<li>设置为 transparent 完全透明</li>
<li>-webkit-tap-highlight-color：transparent</li>
</ul>
</li>
<li>在移动端浏览器默认的外观在 ios 上加上这个属性才能该按钮和输入框自定义样式<ul>
<li>-webkit-appearance:none;</li>
</ul>
</li>
<li>引用长按页面时的弹出菜单<ul>
<li>-webkit-appearance：none；</li>
</ul>
</li>
<li>禁用长按页面时的弹出菜单<ul>
<li>img，a {-webkit-touch-callout：none；}</li>
</ul>
</li>
</ol>
<h2 id="流式布局"><a href="#流式布局" class="headerlink" title="流式布局"></a>流式布局</h2><ol>
<li>流式布局，就是百分比布局，也称非像素布局</li>
<li>通过盒子的宽度设置百分比来根据屏幕的宽度来进行伸缩，不受固定像素的限制，内容向两侧填充</li>
<li>流式布局方式是移动 web 开发使用的比较常见的布局方式</li>
<li>max-width 最大宽度（max-height 最大高度）</li>
<li>min-width 最小宽度（min-height 最小高度）</li>
</ol>
<h3 id="二倍精灵图做法"><a href="#二倍精灵图做法" class="headerlink" title="二倍精灵图做法"></a>二倍精灵图做法</h3><ol>
<li>在 firework 里面吧精灵图等比例缩放为原来的一半</li>
<li>之后根据大小测量坐标</li>
<li>注意代码里面 background-size也要写：精灵图原来宽度的一半</li>
</ol>
<h2 id="flex-弹性布局"><a href="#flex-弹性布局" class="headerlink" title="flex 弹性布局"></a>flex 弹性布局</h2><h3 id="flex-布局体验"><a href="#flex-布局体验" class="headerlink" title="flex 布局体验"></a>flex 布局体验</h3><ol>
<li>传统布局<ul>
<li>兼容性好</li>
<li>布局繁琐</li>
<li>局限性，不能在移动端很好的布局</li>
</ul>
</li>
<li>flex 弹性布局<ul>
<li>操作方便，布局极为简单，移动端应用很广泛</li>
<li>PC 端浏览器支持情况较差</li>
<li>IE 11 或 更低版本，不支持或仅部分支持</li>
</ul>
</li>
<li>建议：<ul>
<li>如果是 PC 端页面布局，建议使用 传统布局</li>
<li>如果是移动端或不考虑兼容性问题的 PC 端页面布局，还是使用 flex 布局</li>
</ul>
</li>
</ol>
<h3 id="布局原理"><a href="#布局原理" class="headerlink" title="布局原理"></a>布局原理</h3><ol>
<li>flex 是 flexible Box 的缩写，意为 “弹性布局”，用来为盒状模型提供最大的灵活性，任何一个容器都可以，指定为 flex 布局。<ul>
<li>当我们为父盒子设为 flex 布局以后，子元素的 float、clear 和 vertical-align 属性将失效</li>
<li>伸缩布局 = 弹性布局 = 伸缩盒布局 = 弹性盒布局 = flex 布局</li>
</ul>
</li>
<li>采用 flex 布局的元素，称为 flex 容器（flex container），简称 “容器”。它的所有子元素自动为容器成员，称为 flex 项目（flex item），简称 “项目”<ul>
<li>体验中 div 就是 flex 父容器</li>
<li>体验中 span 就是子容器 flex 项目</li>
<li>子容器可以横向排列也可以纵向排列</li>
</ul>
</li>
<li>总结：<ul>
<li>就是通过给父盒子添加 flex 属性，来控制子盒子的位置和排列方式</li>
</ul>
</li>
</ol>
<h3 id="常见-父项属性"><a href="#常见-父项属性" class="headerlink" title="常见 父项属性"></a>常见 父项属性</h3><ol>
<li>以下由 6 个属性是对元素设置的<ol>
<li>flex-direction：设置主轴的方向</li>
<li>justify-content：设置主轴上的子元素排列方式</li>
<li>flex-wrap：设置子元素是否换行</li>
<li>align-content：设置侧轴上的子元素的排列方式（多行）</li>
<li>align-items：设置侧轴上的子元素排列方式（单行）</li>
<li>flex-flow：复合属性，相当于同时设置了 flex-direction 和 flex-wrap</li>
</ol>
</li>
</ol>
<h3 id="flex-direction-主轴与侧轴"><a href="#flex-direction-主轴与侧轴" class="headerlink" title="flex-direction 主轴与侧轴"></a>flex-direction 主轴与侧轴</h3><h4 id="主轴与侧轴"><a href="#主轴与侧轴" class="headerlink" title="主轴与侧轴"></a>主轴与侧轴</h4><ol>
<li>在 flex 布句中，是分为主轴和侧轴两个方向，同样的叫法有：行和列、x轴和 y轴<ul>
<li>默认主轴方向就是 x轴方向，水平向右</li>
<li>默认侧轴方向就是 y轴方向，水平向下</li>
</ul>
</li>
</ol>
<h4 id="属性值"><a href="#属性值" class="headerlink" title="属性值"></a>属性值</h4><ol>
<li><p>flex-direction 属性决定主轴的方向（即项目的排列方向）</p>
</li>
<li><p>注意：</p>
<ul>
<li>主轴和侧轴是会变化的，就看 flex-direction 设置谁为主轴</li>
<li>剩下的就是侧轴</li>
<li>而子元素是根据主轴来排列的</li>
<li>默认的主轴就是 x 轴，行 row</li>
</ul>
</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>3.</th>
<th>属性值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>row</td>
<td>默认值从左到右</td>
</tr>
<tr>
<td>row-reverse</td>
<td>从右到左</td>
</tr>
<tr>
<td>column</td>
<td>从上到下</td>
</tr>
<tr>
<td>column-reverse</td>
<td>从下到上</td>
</tr>
</tbody>
</table>
</div>
<h3 id="justify-content-设置主轴上的子元素排列方式"><a href="#justify-content-设置主轴上的子元素排列方式" class="headerlink" title="justify-content 设置主轴上的子元素排列方式"></a>justify-content 设置主轴上的子元素排列方式</h3><ol>
<li><p>justify-content 属性定义了项目在主轴上的对齐方式</p>
</li>
<li><p>注意：</p>
<ul>
<li>使用这个属性之前一定要确定好主轴是那个</li>
</ul>
</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>3.</th>
<th>属性值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>flex-start</td>
<td>默认值 从头部开始，如果主轴是 x 轴，则从左到右</td>
</tr>
<tr>
<td>flex-end</td>
<td>从尾部开始排列</td>
</tr>
<tr>
<td>center</td>
<td>在主轴居中对齐（如果主轴是 x轴 则水平居中）</td>
</tr>
<tr>
<td>space-around</td>
<td>平分剩余空间</td>
</tr>
<tr>
<td>space-between</td>
<td>先两边贴边再平分剩余空间(重要)</td>
</tr>
</tbody>
</table>
</div>
<h3 id="flex-wrap-设置子元素是否换行"><a href="#flex-wrap-设置子元素是否换行" class="headerlink" title="flex-wrap 设置子元素是否换行"></a>flex-wrap 设置子元素是否换行</h3><ol>
<li>默认情况下，项目都排在一条线（又称 “ 轴线 ”）上，flex-wrap 属性定义，flex布局中默认是不换行的</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>属性值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>nowrap</td>
<td>默认值，不换行</td>
</tr>
<tr>
<td>wrap</td>
<td>换行</td>
</tr>
</tbody>
</table>
</div>
<h3 id="align-items-设置侧轴上的子元素排列方式（单行）"><a href="#align-items-设置侧轴上的子元素排列方式（单行）" class="headerlink" title="align-items 设置侧轴上的子元素排列方式（单行）"></a>align-items 设置侧轴上的子元素排列方式（单行）</h3><ol>
<li>该属性是控制 子项在侧轴（默认 y 轴）上的排列方式，在子项为单项的时候使用</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>属性值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>flex-start</td>
<td>从上到下</td>
</tr>
<tr>
<td>flex-end</td>
<td>从下到上</td>
</tr>
<tr>
<td>center</td>
<td>挤在一起居中（垂直居中）</td>
</tr>
<tr>
<td>stretch</td>
<td>拉伸</td>
</tr>
</tbody>
</table>
</div>
<h3 id="align-content-设置-侧轴上的子元素排列方式（多行）"><a href="#align-content-设置-侧轴上的子元素排列方式（多行）" class="headerlink" title="align-content 设置 侧轴上的子元素排列方式（多行）"></a>align-content 设置 侧轴上的子元素排列方式（多行）</h3><ol>
<li>设置子项在侧轴上的排列方式并且只能用于子项出现换行的情况（多行），在单行下是没有效果的</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>属性值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>flex-start</td>
<td>默认值在侧轴的头部开始排列</td>
</tr>
<tr>
<td>flex-end</td>
<td>在侧轴的尾部开始排列</td>
</tr>
<tr>
<td>center</td>
<td>在侧轴中间显示</td>
</tr>
<tr>
<td>space-around</td>
<td>子项在侧轴平分剩余空间</td>
</tr>
<tr>
<td>space-between</td>
<td>子项在侧轴先分布在两头，在平分剩余空间</td>
</tr>
<tr>
<td>strech</td>
<td>设置子项元素高度平分元素高度</td>
</tr>
</tbody>
</table>
</div>
<h3 id="align-content-和-align-items-区别"><a href="#align-content-和-align-items-区别" class="headerlink" title="align-content 和 align-items 区别"></a>align-content 和 align-items 区别</h3><ol>
<li>algin-items 使用于单行情况下，只有上对齐、下对齐、居中和拉伸</li>
<li>align-content 使应于换行（多行）的情况下（单行情况下无效），可以设置上对齐、下对齐、居中、拉伸以及平均分配剩余空间等属性值</li>
<li>总结就是单行找 align-items 多行找 align-content</li>
</ol>
<h3 id="flex-flow-复合属性"><a href="#flex-flow-复合属性" class="headerlink" title="flex-flow 复合属性"></a>flex-flow 复合属性</h3><ol>
<li><p>flex-flow 属性是 flex-direction 和 flex-wrap 属性的复合属性</p>
</li>
<li><p>```css<br>沿 y 轴对齐 换行<br>flex-flow:column wrap;</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">### flex 布局子项常见属性</span><br><span class="line"></span><br><span class="line">1. flex 子项目占的份数</span><br><span class="line">2. align-self 控制子项自己在侧轴的排列方式</span><br><span class="line">3. order 属性定义子项的排列顺序（前后顺序）</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">### flex 属性</span><br><span class="line"></span><br><span class="line">1. flex 属性定义子项目分配剩余空间，用 flex 来表示占多少份数</span><br><span class="line"></span><br><span class="line">2. ```css</span><br><span class="line">   .item &#123;</span><br><span class="line">       flex:&lt;number&gt;; /* default 0 */</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h3 id="align-self"><a href="#align-self" class="headerlink" title="align-self"></a>align-self</h3><ol>
<li><p>align-self 控制子项自己在侧轴上的排列方式</p>
</li>
<li><p>align-self 属性允许 单个项目有与其他项目不一样的对齐方式，可覆盖 align-items 属性</p>
</li>
<li><p>默认值为 auto ，表示继承父 元素的 align-items 属性，如果没有父元素，则等同于 stretch</p>
</li>
<li><p>```css<br>span:nth-child(2){</p>
<pre><code>/* 设置自己在侧轴上的排列方式 */
align-self:flex-end;
</code></pre><p>}</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">## rem适配布局</span><br><span class="line"></span><br><span class="line">1. 为什么学习 rem 布局</span><br><span class="line">   - 页面布局文字能否随着屏幕大小变化而变化</span><br><span class="line">   - 流式布局和 flex 布局主要针对于宽度布局，那高度如何设置</span><br><span class="line">   - 怎么样让屏幕发生变化的时候元素宽度和高度等比例缩放</span><br><span class="line"></span><br><span class="line">### rem基础</span><br><span class="line"></span><br><span class="line">#### rem 单位</span><br><span class="line"></span><br><span class="line">1. rem（root em）是一个相对单位，类似于 em ，em是父元素字体大小</span><br><span class="line">2. 不能的是 rem 的基准是相对于 html 元素的字体大小</span><br><span class="line">3. 比如：根元素（html）设置 font-size=12px; 非根元素设置 width：2rem；则换成 px 表示就是 24px</span><br><span class="line">4. em 相对于 `父元素` 的字体大小来说的</span><br><span class="line">5. rem 相对于 `html 元素` 字体大小字体大小来说的</span><br><span class="line">6. rem 的优点就是可以通过修改 html 里面的文字大小来改变页面中元素的大小可以整体控制</span><br><span class="line"></span><br><span class="line">### 媒体查询</span><br><span class="line"></span><br><span class="line">1. 媒体查询（Media Query）是CSS3新语法</span><br><span class="line"></span><br><span class="line">2. 使用 @media 查询，可以针对 不同的媒体类型定义不同的样式</span><br><span class="line"></span><br><span class="line">3. @media 可以针对不同的屏幕尺寸 设置不同的样式</span><br><span class="line"></span><br><span class="line">4. 当你重置浏览器大小的过程中，页面也会根据浏览器的宽度和高度重新渲染页面</span><br><span class="line"></span><br><span class="line">5. 目前针对很多苹果手机，Android 手机、平板等设备都用得到更多的媒体查询</span><br><span class="line"></span><br><span class="line">6. 语法规范：</span><br><span class="line"></span><br><span class="line">7. ```css</span><br><span class="line">   @media mediatype and|not|only (media feature)&#123;</span><br><span class="line">       CSS-Code;</span><br><span class="line">   &#125;</span><br></pre></td></tr></table></figure>
<ul>
<li>用 @media 开头 注意@符号</li>
<li>mediatype 媒体类型</li>
<li>关键字 and not only</li>
<li>mediafeature 媒体特性 必须有小括号包含</li>
</ul>
</li>
<li><p>mediatype 查询类型：</p>
<ul>
<li>将不同的终端设备划分成不同的类型，称为媒体类型</li>
</ul>
<p>| -     | 值                                 | 解释说明 |<br>| ——- | ————————————————— |<br>| all   | 用于所有设备                       |<br>| print | 用于打印机和打印预览               |<br>| scree | 用于电脑屏幕，平板电脑、智能手机等 |</p>
</li>
<li><p>关键字：</p>
<ul>
<li>关键字将媒体类型或多个媒体特性链接到一起，做为媒体查询的条件</li>
<li>and：可以将多个媒体特性链接到一起，相当于 ”且“ 的意思</li>
<li>not：排除某个媒体类型，相当于 “  非 ” 的意思，可以省略</li>
<li>only：指定某个特定的媒体类型，可以省略</li>
</ul>
</li>
<li><p>媒体特性：</p>
<ul>
<li>每种媒体类型都具有各自不同的特性，根据不同媒体类型的媒体特性设置不同的展示风格，暂且了解三个，注意要加小括号包含</li>
</ul>
<p>| -         | 值                                   | 解释说明 |<br>| ————- | —————————————————— |<br>| width     | 定义输出设备中页面可见区域的宽度     |<br>| min-width | 定义输出设备中页面最小可见区域宽度   |<br>| max-width | 定义输出设备中页面最大可见区域的宽度 |</p>
</li>
</ol>
<ol>
<li><p>媒体查询可以根据不同的屏幕尺寸改变不同的样式</p>
</li>
<li><p>媒体查询一般是按照从大到小或从小到大的顺序来</p>
<ul>
<li>```css<br>   @media screen and (max-width: 539px) {<pre><code>    body &#123;
      background-color: blue;
    &#125;
  &#125;
</code></pre><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">13. and 后一定要用空格隔开，不然不起作用</span><br><span class="line"></span><br><span class="line">14. 注意：</span><br><span class="line"></span><br><span class="line">    - 为了防止混乱，从小到大的顺序更简洁，因为样式的层叠性</span><br><span class="line">    - screen 和 and 不能省略</span><br><span class="line"></span><br><span class="line">#### 媒体查询 + rem 实现元素动态大小的变化</span><br><span class="line"></span><br><span class="line">1. rem 单位是跟着 html 来走的，有了 rem 页面元素可以设置不同大小的尺寸</span><br><span class="line">2. 媒体查询可以根据不同设备宽度来修改样式</span><br><span class="line">3. 媒体查询 + rem 就可以实现不同设备宽度，实现页面元素大小的动态变化</span><br><span class="line"></span><br><span class="line">#### 引入资源（理解）</span><br><span class="line"></span><br><span class="line">1. 当样式比较繁多的时候，我们可以针对不同的媒体使用不同的 stylesheets（样式表）</span><br><span class="line"></span><br><span class="line">2. 原理，就是直接在 link 中判断设备的尺寸，然后引用不同的 css 文件</span><br><span class="line"></span><br><span class="line">3. 语法规范：</span><br><span class="line"></span><br><span class="line">   - ```css</span><br><span class="line">     &lt;link rel=&quot;stylesheet&quot; media=&quot;mediatype and|not|only (media feature)&quot; href=&quot;mystylesheet.css&quot; &gt;</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
<li><p>一个建议：我们媒体查询最好的方法是从小到大</p>
</li>
<li><p>判断条件，就是媒体查询</p>
</li>
</ol>
<h3 id="Less基础"><a href="#Less基础" class="headerlink" title="Less基础"></a>Less基础</h3><h4 id="维护-css-的弊端"><a href="#维护-css-的弊端" class="headerlink" title="维护 css 的弊端"></a>维护 css 的弊端</h4><ol>
<li>css 是一门非程序式语言，没有变量、函数、SCOPE （作用域）等概念</li>
<li>CSS 需要书写大量看似没有逻辑的代码，CSS 冗余比较高</li>
<li>不方便维护及扩展，不利于复用</li>
<li>CSS 没有很好的计算能力</li>
<li>非前端开发工程师来讲，往往会因为缺少CSS 编写经验而很难写出组织良好且易于维护的CSS代码项目</li>
</ol>
<h4 id="Less-介绍"><a href="#Less-介绍" class="headerlink" title="Less 介绍"></a>Less 介绍</h4><ol>
<li>Less（Leaner Style Sheels 的缩写）是一门 CSS 扩展语言，也成为CSS预处理器</li>
<li>做为CSS 的一种形式的扩展，它并没有减少 CSS 的 功能，而是在CSS 语法上，为CSS加入程序语言的特性</li>
<li>它在CSS 的语法基础之上，引入了变量，MiXin（混入），运算以及函数等功能，大大简化了CSS的缩写</li>
<li>并且降低了CSS的维护成本，就像它的名称所说的那样</li>
<li>Less 可以让我们用更少的代码做更多的事情</li>
<li>Less中文网：<a target="_blank" rel="noopener" href="http://lesscss.cn/">http://lesscss.cn/</a></li>
<li>常见的 CSS 预处理器：Sass、Less、stylus</li>
<li>一句话：Less是一门CSS预处理语言，它扩展了CSS的动态特性</li>
</ol>
<h4 id="Less-使用"><a href="#Less-使用" class="headerlink" title="Less 使用"></a>Less 使用</h4><ol>
<li>首先新建一个后缀名为 less 的文件，在这个less 文件里写less 语句</li>
<li>Less 变量</li>
<li>Less 编译</li>
<li>Less 嵌套</li>
<li>Less 运算</li>
<li>Less 和 css 样式文件导入</li>
</ol>
<h5 id="Less-变量"><a href="#Less-变量" class="headerlink" title="Less 变量"></a>Less 变量</h5><ol>
<li><p>变量是指没有固定的值，可以改变的，因为我们CSS中的一些颜色和数值等经常使用</p>
</li>
<li><p>语法：</p>
<ul>
<li>```css<br>@变量名:值;<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">3. 变量命名规范</span><br><span class="line"></span><br><span class="line">   1. 必须有@为前缀</span><br><span class="line">   2. 不能包含特殊字符</span><br><span class="line">   3. 不能以数字开头</span><br><span class="line">   4. 大小写敏感</span><br><span class="line"></span><br><span class="line">##### Less 编译</span><br><span class="line"></span><br><span class="line">1. 本质上，Less包含一套自定义的语法以及一个编译器，用户根据这些语法定义自己的样式规则，这些规则最终会通过解析器，编译生成对应的CSS文件</span><br><span class="line">2. 所以，我们只需要吧我们的 Less 文件，编译生成css 文件，这样我们的 html 页面才能使用</span><br><span class="line"></span><br><span class="line">##### Less 嵌套</span><br><span class="line"></span><br><span class="line">1. Less 嵌套子元素的样式直接写到父元素里面就好了</span><br><span class="line"></span><br><span class="line">2. 语法:</span><br><span class="line"></span><br><span class="line">   - ```css</span><br><span class="line">     .header &#123;</span><br><span class="line">       width: 200px;</span><br><span class="line">       height: 200px;</span><br><span class="line">       border-right-color: pink;</span><br><span class="line">       a &#123;</span><br><span class="line">         color: red;</span><br><span class="line">       &#125;</span><br><span class="line">     &#125;</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
<li><p>如果遇见（交集|伪类|伪元素选择器）</p>
</li>
<li><p>内层选择器的前面没有 &amp; 符号，则它被解析为父选择器的后代</p>
</li>
<li><p>如果有 &amp; 符号，它就被解析为父元素自身或父元素的伪类</p>
<ul>
<li>```css<br>.header {<br>  width: 200px;<br>  height: 200px;<br>  border-right-color: pink;<br>  a {<pre><code>color: red;
 &amp;:hover &#123;
  color: blue;
&#125;
 &amp;::after &#123;
  color: blue;
&#125;
</code></pre>  }<br>}<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br><span class="line">##### Less 运算</span><br><span class="line"></span><br><span class="line">1. 任何数字、颜色或者变量都可以参与运算，就是Less提供了加（+）、（-）、（*）、（/）算术运算</span><br><span class="line"></span><br><span class="line">2. ```less</span><br><span class="line">   /* Less 里面写 */</span><br><span class="line">   @witdh:10px + 5;</span><br><span class="line">   div&#123;</span><br><span class="line">       border:@witdh solid red;</span><br><span class="line">   &#125;</span><br><span class="line">   /* 生成的css */</span><br><span class="line">   div&#123;</span><br><span class="line">       border:15px solid red;</span><br><span class="line">   &#125;</span><br><span class="line">   /* Less 甚至还可以这样 */</span><br><span class="line">   width:(@width + 5)</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
<li><p>注意：</p>
<ul>
<li>乘号（*）和除号（/）的写法</li>
<li>在 less 中 运用 乘法 除法 需要用括号括着，这是为了 easy less 插件为了保证数学的严谨性</li>
<li>运算符中间左右有个空格隔开 1px +5</li>
<li>对于两个不同的单位的值之间的运算，运算结果的值取第一个值的单位</li>
<li>如果两个值之间只有一个值有单位，则运算结果就取该单位</li>
</ul>
</li>
</ol>
<h3 id="rem适配方案"><a href="#rem适配方案" class="headerlink" title="rem适配方案"></a>rem适配方案</h3><h4 id="rem实际开发适配方案"><a href="#rem实际开发适配方案" class="headerlink" title="rem实际开发适配方案"></a>rem实际开发适配方案</h4><ol>
<li>按照设计稿与设备宽度的比例，动态计算并设置 html 跟标签的 font-size 大小（媒体查询）</li>
<li>CSS 中，设计稿元素的宽、高、相对位置等取值、按照同等比例换算为 rem 为单位的值</li>
</ol>
<h4 id="rem-适配方案技术使用（市场主流）"><a href="#rem-适配方案技术使用（市场主流）" class="headerlink" title="rem 适配方案技术使用（市场主流）"></a>rem 适配方案技术使用（市场主流）</h4><h5 id="技术方案1"><a href="#技术方案1" class="headerlink" title="技术方案1"></a>技术方案1</h5><ol>
<li>less</li>
<li>媒体查询</li>
<li>rem</li>
</ol>
<h5 id="技术方案2（推荐）"><a href="#技术方案2（推荐）" class="headerlink" title="技术方案2（推荐）"></a>技术方案2（推荐）</h5><ol>
<li>flexible.js 地址：<a target="_blank" rel="noopener" href="https://github.com/amfe/lib-flexible">https://github.com/amfe/lib-flexible</a></li>
<li>rem</li>
</ol>
<h5 id="总结："><a href="#总结：" class="headerlink" title="总结："></a>总结：</h5><ol>
<li>两种方案现在都存在</li>
<li>方案2更简单、</li>
</ol>
<h4 id="rem-实际开发适配方案1"><a href="#rem-实际开发适配方案1" class="headerlink" title="rem 实际开发适配方案1"></a>rem 实际开发适配方案1</h4><ol>
<li>rem + 媒体查询 + less 技术</li>
</ol>
<h5 id="设计稿常见尺寸宽度"><a href="#设计稿常见尺寸宽度" class="headerlink" title="设计稿常见尺寸宽度"></a>设计稿常见尺寸宽度</h5><div class="table-container">
<table>
<thead>
<tr>
<th>1.</th>
<th>设备</th>
<th>常见宽度</th>
</tr>
</thead>
<tbody>
<tr>
<td>iphone 4.5</td>
<td>640px</td>
</tr>
<tr>
<td>iphone 678</td>
<td>750px</td>
</tr>
<tr>
<td>android</td>
<td>常见320px、360px、375px、384px、400px、414px、500px 大部分4.7~5 寸的安卓设备为720px</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li>一般情况下、我们以一套或两套效果适应大部分的屏幕、放弃极端屏或对齐优雅降级、牺牲一些效果、现在基本以750为准</li>
</ol>
<h5 id="动态设置-html-标签-font-size大小"><a href="#动态设置-html-标签-font-size大小" class="headerlink" title="动态设置 html 标签 font-size大小"></a>动态设置 html 标签 font-size大小</h5><ol>
<li>假设实际稿是 750px</li>
<li>假设我们吧整个屏幕划分为15等份（划分标准不一，可以是20份也可是10份）</li>
<li>每一份作为html 字体大小，这里就是50px</li>
<li>那么在 320px设备的时候，字体大小为 320/15 就是21.33px</li>
<li>用我们页面元素的大小除以不同的html 字体大小会发现他们比例还是相同的</li>
<li>比如我们以750为标准设计稿</li>
<li>一个100 <em> 100 像素的页面元素在 750屏幕下、就是 100/50 转换为 rem 是2rem</em> 2rem 比例是 1比1</li>
<li>320屏幕下，html 字体大小 为21.33 则 2rem =42.66px，此时宽和高都是 42.66 但是宽和 高的比例还是 1比1</li>
<li>但是已经能实现不同屏幕下，页面元素盒子等比例缩放效果</li>
</ol>
<h5 id="元素大小取值方法"><a href="#元素大小取值方法" class="headerlink" title="元素大小取值方法"></a>元素大小取值方法</h5><ol>
<li>最后的公式：页面元素的 rem值 = 页面元素值（px）/ （屏幕宽度 / 划分的份数）</li>
<li>屏幕宽度 / 划分的份数，就是 html  font-size 的大小</li>
<li>或者：页面元素的 rem 值 = 页面元素值（px）/ html font-size 字体大小</li>
</ol>
<h5 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h5><ol>
<li><p>首先我们选一套标准的尺寸 750为准</p>
</li>
<li><p>我们用屏幕尺寸 除以 我们划分的份数 得到了 html 里面文字大小 但是我们知道不同屏幕下得到的文字大小是不一样的</p>
</li>
<li><p>页面元素的rem值 = 页面元素在 750像素的下px值 / html 里面的文字大小</p>
</li>
<li><p>如果是在 PC端打开页面，一定要在最上面写死字体大小</p>
<ul>
<li>```css<br>html {<pre><code>font-size:50px;
</code></pre>}<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">### 样式导入</span><br><span class="line"></span><br><span class="line">1. 在 less 或 css 样式文件中 导入</span><br><span class="line"></span><br><span class="line">2. 语法：</span><br><span class="line"></span><br><span class="line">3. ```css</span><br><span class="line">   // 在 index.less 中导入 common.less 文件</span><br><span class="line">   @import &quot;common&quot;</span><br></pre></td></tr></table></figure>
</li>
</ul>
</li>
<li><p>导入最好不要加后缀名，不然不能使用</p>
</li>
</ol>
<h2 id="响应式布局"><a href="#响应式布局" class="headerlink" title="响应式布局"></a>响应式布局</h2><h3 id="响应式开发的原理"><a href="#响应式开发的原理" class="headerlink" title="响应式开发的原理"></a>响应式开发的原理</h3><ol>
<li>就是使用媒体查询针对不同宽度的设备进行布局和样式的设置，从而适配不同设备的目的</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>2.</th>
<th>设备划分</th>
<th>尺寸区间</th>
</tr>
</thead>
<tbody>
<tr>
<td>超小屏幕（手机）</td>
<td>&lt; 768px</td>
</tr>
<tr>
<td>小屏设备（平板）</td>
<td>&gt;= 768px ~992px</td>
</tr>
<tr>
<td>中等屏幕（桌面显示器）</td>
<td>&gt;= 992px ~ &lt; 1200px</td>
</tr>
<tr>
<td>宽屏设备（大桌面显示器）</td>
<td>&gt;= 1200px</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li>Bootstrap 中 已经包含 normo清除样式的文件了，无需重复引入</li>
</ol>
<h3 id="响应式布局容器"><a href="#响应式布局容器" class="headerlink" title="响应式布局容器"></a>响应式布局容器</h3><ol>
<li>响应式需要一个父级做为布局容器，来配合子级 元素来实现变化的效果</li>
<li>原理就是在不同屏幕下，通过媒体查询来改变这个布局容器的大小，再改变里面子元素的排列方式和大小，</li>
<li>从而实现不同屏幕下，看到不同的页面布局和样式变化</li>
<li><code>平时我们的响应式布局尺寸划分</code><ul>
<li>超小屏幕（手机、小于768px）：设备宽度为 100%</li>
<li>小屏幕（平板、大于等于 768px）：设备宽度为 750px</li>
<li>中等屏幕（桌面显示器、大于等于 992px）：宽度设置为 970px</li>
<li>大屏幕（大桌面显示器，大于等于 1200px）：宽度设置为1170px</li>
</ul>
</li>
</ol>
<h3 id="Bootstrap-前端开发框架"><a href="#Bootstrap-前端开发框架" class="headerlink" title="Bootstrap  前端开发框架"></a>Bootstrap  前端开发框架</h3><ol>
<li>Bootstrap 来自 Twitter（推特），是目前最受欢迎的前端框架，基于HTML、CSS、JAVASCRIPT 的，他简洁灵活，使得Web开发更加快捷</li>
<li>中文官网：<a target="_blank" rel="noopener" href="http://www.bootcss.com/">http://www.bootcss.com/</a></li>
<li>官网：<a target="_blank" rel="noopener" href="http://getbootstrap.com/">http://getbootstrap.com/</a></li>
<li>推荐使用：<a target="_blank" rel="noopener" href="http://bootstrap.css88.com/">http://bootstrap.css88.com/</a></li>
<li>框架：顾名思义就是一套架构，它有一套比较完整的网页功能解决方案，而且控制权限在框架本身，使用者要按照框架所规定的某种规范进行开发</li>
<li>优点：<ul>
<li>标准化的 html+css 编码规范</li>
<li>提供了一套简洁、直观、强悍的组件</li>
<li>有自己的生态圈、不断的更新迭代</li>
<li>让开发更简单、提高了开发的效率</li>
</ul>
</li>
</ol>
<h3 id="Bootstrap-的使用"><a href="#Bootstrap-的使用" class="headerlink" title="Bootstrap 的使用"></a>Bootstrap 的使用</h3><ol>
<li>创建文件夹结构</li>
<li>创建 html + bootstrap 骨架结构</li>
<li>引入相关样式文件</li>
<li>书写内容</li>
</ol>
<h3 id="布局容器"><a href="#布局容器" class="headerlink" title="布局容器"></a>布局容器</h3><ol>
<li>Bootstrap 需要为页面内容和栅格系统包裹一个 .container 容器，Bootstrap 预先定义好了这个类叫 .container</li>
<li>他提供了两个作此用处的类</li>
<li><code>container 类</code><ul>
<li>响应式布局的容器 固定宽度</li>
<li>大屏（&gt;= 1200px）宽度定为 1170px</li>
<li>中屏（&gt;= 992px）宽度定为 970px</li>
<li>小屏（&gt;= 768px）宽度定为 750px</li>
<li>超小屏（100%）</li>
</ul>
</li>
<li>container-fluid类<ul>
<li>流式布局容器百分百宽度</li>
<li>占据全部视口（viewport）的容器</li>
<li>适合于单独做移动端开发</li>
</ul>
</li>
</ol>
<h3 id="栅格系统简介"><a href="#栅格系统简介" class="headerlink" title="栅格系统简介"></a>栅格系统简介</h3><ol>
<li>栅格系统英文为“grid systems”，也有人称网格系统，它是指将页面布局划分为等宽的列，然后通过列数的定义来模块化页面布局</li>
<li>Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统。随着屏幕或视口（viewport）尺寸的增加</li>
<li>系统会自动分为最多12列</li>
<li>Bootstrap里面 container 宽度是固定的，但是不同屏幕下，container 的宽度不同，我们再把container 划分为 12等份</li>
</ol>
<h3 id="栅格选项参数"><a href="#栅格选项参数" class="headerlink" title="栅格选项参数"></a>栅格选项参数</h3><ol>
<li><p>栅格系统用于通过一系列的行（row）与列（column）的组合来创建页面布局，你的内容就可以放入这些创建好的布局中</p>
</li>
<li><p><img src= "" data-lazy-src="img/%E6%A0%85%E6%A0%BC%E7%B3%BB%E7%BB%9F%E5%8F%82%E6%95%B0.jpg" alt=""></p>
</li>
<li><p>行（row)必须放到 container 布局里面</p>
</li>
<li><p>我们实现列的平均分需要给列添加 类前缀</p>
</li>
<li><p>xs-extra small：超小；</p>
</li>
<li><p>sm-small：小；</p>
</li>
<li><p>md-medium：中等；</p>
</li>
<li><p>lg-large：大；</p>
</li>
<li><p>列（column）大于12，多余的 “列（column）”所在的元素将被作为一个整体另起一行排列</p>
</li>
<li><p>每一列默认有 15 像素的 padding</p>
</li>
<li><p>可以同时为一列指定多个设备的类名，以便划分不同份数</p>
</li>
<li><p>例如：class=“col-md-4 col-sm-6”</p>
</li>
<li><pre><code class="lang-html">&lt;!-- 第一个例子：控制列的宽度及在不同的设备上如何显示 --&gt;
&lt;div class=&quot;row&quot;&gt;
  &lt;div class=&quot;col-*-*&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;row&quot;&gt;
  &lt;div class=&quot;col-*-*&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;col-*-*&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;col-*-*&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- 第二个例子：或让 Bootstrap 者自动处理布局 --&gt;
&lt;div class=&quot;row&quot;&gt;
  &lt;div class=&quot;col&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;col&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;col&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre>
</li>
<li><p>总结：</p>
</li>
<li><p>每一行下面的列不管占几份，只要能吧一共的 12 份 占完就行</p>
</li>
<li><p>如果相加等于12，则等于.container宽度</p>
</li>
<li><p>如果相加小于12，则不占满 .container，留有空白</p>
</li>
<li><p>如果相加大于12，则多出来的那一列会，另起一行显示</p>
</li>
</ol>
<h3 id="列嵌套"><a href="#列嵌套" class="headerlink" title="列嵌套"></a>列嵌套</h3><ol>
<li>栅格系统内置的栅格系统将内容再次嵌套，简单理解就是一个列内再分成若干份小列，</li>
<li>我们可以通过添加一个新的 .row元素和一系列 .col-sm-<em> 元素到已经存在的 .col-sm-</em> 元素内</li>
<li>列嵌套最好加一行包裹需要的列，这样可以取消父元素的padding值，且高度和父级一样高</li>
<li>在栅格布局中，使用行和列且已经划分过了，自动有 浮动 和宽度的划分</li>
<li>不能在加 margin 值。不然会掉下来，解决办法就是列嵌套</li>
</ol>
<h3 id="列偏移"><a href="#列偏移" class="headerlink" title="列偏移"></a>列偏移</h3><ol>
<li>使用 offset-md-<em> 或 offset-</em> 类可以将列向右侧偏移，</li>
<li>这些类实际是通过使用 * 选择器 为当前元素增加了左侧的边距（margin）</li>
</ol>
<h3 id="列排序"><a href="#列排序" class="headerlink" title="列排序"></a>列排序</h3><ol>
<li>通过使用 .col-md-push-<em>  和 .col-md-pull-</em> 类就可以很容易改变列（column）的排序</li>
<li>col-md-push-8 向右偏移 8份</li>
<li>col-md-pull-4 向左侧偏移4分</li>
</ol>
<h3 id="响应式工具"><a href="#响应式工具" class="headerlink" title="响应式工具"></a>响应式工具</h3><ol>
<li><p>为了加快对移动设备友好的页面开发工作，利用媒体查询功能，并使用</p>
</li>
<li><p>这些工具类可以方便的针对不同设备展示或隐藏页面内容</p>
</li>
</ol>
<div class="table-container">
<table>
<thead>
<tr>
<th>3.</th>
<th>类名</th>
<th>超小屏</th>
<th>小屏</th>
<th>中屏</th>
<th>大屏</th>
</tr>
</thead>
<tbody>
<tr>
<td>.hidden-xs</td>
<td>隐藏</td>
<td>可见</td>
<td>可见</td>
<td>可见</td>
</tr>
<tr>
<td>.hidden-sm</td>
<td>可见</td>
<td>隐藏</td>
<td>可见</td>
<td>可见</td>
</tr>
<tr>
<td>.hidden-md</td>
<td>可见</td>
<td>可见</td>
<td>隐藏</td>
<td>可见</td>
</tr>
<tr>
<td>.hidden-lg</td>
<td>可见</td>
<td>可见</td>
<td>可见</td>
<td>隐藏</td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><p>与之相反的，是</p>
<ul>
<li>visible-xs</li>
<li>visible-sm</li>
<li>visible-md</li>
<li>visible-lg</li>
<li>显示某个页面的内容</li>
</ul>
</li>
</ol>
<p>5.</p>
<h2 id="移动布局总结"><a href="#移动布局总结" class="headerlink" title="移动布局总结"></a>移动布局总结</h2><h3 id="移动端主流方案-1"><a href="#移动端主流方案-1" class="headerlink" title="移动端主流方案"></a>移动端主流方案</h3><h4 id="单独制作移动端页面（主流）-1"><a href="#单独制作移动端页面（主流）-1" class="headerlink" title="单独制作移动端页面（主流）"></a>单独制作移动端页面（主流）</h4><ol>
<li>京东商城</li>
<li>淘宝</li>
<li>苏宁易购</li>
</ol>
<h4 id="响应式页面兼容移动端（其次）-1"><a href="#响应式页面兼容移动端（其次）-1" class="headerlink" title="响应式页面兼容移动端（其次）"></a>响应式页面兼容移动端（其次）</h4><ol>
<li>三星手机官网</li>
</ol>
<h3 id="移动端技术选型"><a href="#移动端技术选型" class="headerlink" title="移动端技术选型"></a>移动端技术选型</h3><ol>
<li>流式布局（百分比布局）</li>
<li>flex 弹性布局（推荐）</li>
<li>rem 适配布局（推荐）</li>
<li>响应式布局</li>
<li>建议：选取一种主要技术选型，其他技术作为辅助，这种混合式开发</li>
</ol>
<h1 id="vw-和-vh"><a href="#vw-和-vh" class="headerlink" title="vw 和 vh"></a>vw 和 vh</h1><h2 id="移动端布局"><a href="#移动端布局" class="headerlink" title="移动端布局"></a>移动端布局</h2><ol>
<li>移动端布局 —- flex布局</li>
<li>为了实现可以适配移动端，页面元素可以宽度和高度等比例缩放</li>
<li>需要移动端适配有如下方案：</li>
<li>rem 市场比较常见<ul>
<li>需要不断修改 html 文字大小</li>
<li>需要媒体查询 media</li>
<li>需要 flexible.js</li>
</ul>
</li>
<li>将来马上趋势<ul>
<li>省去各种判断和修改</li>
<li>代表：B站</li>
</ul>
</li>
</ol>
<h2 id="vw-和-vh-是什么"><a href="#vw-和-vh-是什么" class="headerlink" title="vw 和 vh 是什么"></a>vw 和 vh 是什么</h2><ol>
<li>vw 和 vh 是一个相对单位（类似 em 和 rem 相对单位）<ul>
<li>vw是：viewport width 视口宽度单位</li>
<li>vh是：viewport height 视口高度单位</li>
</ul>
</li>
<li>相对视口的尺寸计算结果<ul>
<li>1vw = 1/100视口宽度</li>
<li>1vh = 1/100 视口高度</li>
</ul>
</li>
<li>例如：</li>
<li>当前屏幕视口是 375 像素，则 1vw 就是 3.75 像素，如果当前屏幕视口为414，则 1 vw</li>
<li>注意：<ul>
<li>和百分比有区别的，百分比是相对于父元素莱说的，而vw和 vh 总是针对当前视口来说的</li>
</ul>
</li>
<li>思考：<ol>
<li>vw 和 vh 是什么？<ul>
<li>是相对单位总是相对于视口说的</li>
<li>是相对单位总是相对于视口说的</li>
<li>是相对单位总是相对于视口说的</li>
<li>1vw 就是当前视口的的 1/100</li>
</ul>
</li>
<li>vw 和 百分比的区别是什么？<ul>
<li>百分比 % 相对于父元素来说的</li>
<li>vw 和 vh 相对于当前视口来说的</li>
</ul>
</li>
</ol>
</li>
</ol>
<h2 id="vw-和-vh-怎么用"><a href="#vw-和-vh-怎么用" class="headerlink" title="vw 和 vh 怎么用"></a>vw 和 vh 怎么用</h2><ol>
<li>如何还原设计稿？</li>
<li>前提：我们设计稿按照 iphone678来设计，有个盒子 50px * 50px 如何使用 vw 和 vh</li>
<li>分析：<ul>
<li>设计稿参照 iphone678，所以视口宽度 尺寸是 375 像素（像素大厨切换到2x模式）</li>
<li>那么 1 vw 是多少像素？</li>
<li>375px / 100 = 3.75px</li>
<li>我们元素的目标是多少像素？</li>
<li>50px * 50px</li>
<li>那么 50 * 50 是多少个 vw？</li>
<li>50 / 37.5 = 13.3333vw</li>
</ul>
</li>
</ol>
<h2 id="总结-1"><a href="#总结-1" class="headerlink" title="总结"></a>总结</h2><ol>
<li>开发中使用 vw ，需要像素大厨有哪些改动？<ul>
<li>吧模式改为2x模式</li>
</ul>
</li>
<li>开发中使用 vw ，如何还原设计稿？<ul>
<li>确定设计稿视口宽度。比如 375</li>
<li>直接使用 测量数值 / （视口宽度  / 100）</li>
<li>比如：50 /（375 / 100）</li>
</ul>
</li>
</ol>
<h2 id="vw-注意事项"><a href="#vw-注意事项" class="headerlink" title="vw 注意事项"></a>vw 注意事项</h2><ol>
<li>因为设计到大量的除法，还是适应 Less 搭配使用好点</li>
<li>本质是根据视口宽度来等比例缩放页面元素高度和宽度的。</li>
<li>所以开发中使用 vw 就基本够用了，vh 很少使用</li>
<li>兼容性：网站：<a target="_blank" rel="noopener" href="https://caniuse.com/">https://caniuse.com/</a></li>
</ol>
<h2 id="什么是-CSS3-的盒子模型"><a href="#什么是-CSS3-的盒子模型" class="headerlink" title="什么是 CSS3 的盒子模型"></a>什么是 CSS3 的盒子模型</h2><ol>
<li>css3 是将 padding 和 border 都算进去的</li>
</ol>
</article><div class="post-copyright"><div class="post-copyright__author"><span class="post-copyright-meta">文章作者: </span><span class="post-copyright-info"><a href="http://example.com">晚夜微雨问海棠</a></span></div><div class="post-copyright__type"><span class="post-copyright-meta">文章链接: </span><span class="post-copyright-info"><a href="http://example.com/posts/98f3a6d9.html">http://example.com/posts/98f3a6d9.html</a></span></div><div class="post-copyright__notice"><span class="post-copyright-meta">版权声明: </span><span class="post-copyright-info">本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 许可协议。转载请注明来自 <a href="http://example.com" target="_blank">晚夜微雨问海棠のBlog</a>！</span></div></div><div class="tag_share"><div class="post_share"><div class="social-share" data-image="https://s1.ax1x.com/2023/04/02/ppfbWQA.jpg" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/js/social-share.min.js" defer></script></div></div><div class="post-reward"><div class="reward-button"><i class="fas fa-qrcode"></i> 打赏</div><div class="reward-main"><ul class="reward-all"><li class="reward-item"><a href="https://s1.ax1x.com/2022/11/15/zE9P7d.jpg" target="_blank"><img class="post-qr-code-img" src= "" data-lazy-src="https://s1.ax1x.com/2022/11/15/zE9P7d.jpg" alt="微信"/></a><div class="post-qr-code-desc">微信</div></li><li class="reward-item"><a href="https://s1.ax1x.com/2022/11/15/zE9ung.jpg" target="_blank"><img class="post-qr-code-img" src= "" data-lazy-src="https://s1.ax1x.com/2022/11/15/zE9ung.jpg" alt="支付宝"/></a><div class="post-qr-code-desc">支付宝</div></li></ul></div></div><hr/><div id="post-comment"><div class="comment-head"><div class="comment-headline"><i class="fas fa-comments fa-fw"></i><span> 评论</span></div></div><div class="comment-wrap"><div><div class="vcomment" id="vcomment"></div></div></div></div></div><div class="aside-content" id="aside-content"><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span><span class="toc-percentage"></span></div><div class="toc-content is-expand"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#PC%E7%AB%AFWeb%E5%BC%80%E5%8F%91"><span class="toc-number">1.</span> <span class="toc-text">PC端Web开发</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%9C%A8%E5%BD%93%E5%89%8D%E9%A1%B5%E9%9D%A2%E6%89%93%E5%BC%80%E9%93%BE%E6%8E%A5"><span class="toc-number">2.</span> <span class="toc-text">在当前页面打开链接</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E4%B8%8A%E4%BC%A0%E6%8C%89%E9%92%AE"><span class="toc-number">2.0.1.</span> <span class="toc-text">上传按钮</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#select-%E4%B8%8B%E6%8B%89%E8%A1%A8%E5%8D%95%E5%85%83%E7%B4%A0"><span class="toc-number">2.1.</span> <span class="toc-text">select 下拉表单元素</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#Css"><span class="toc-number">3.</span> <span class="toc-text">Css</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%AD%97%E4%BD%93"><span class="toc-number">3.1.</span> <span class="toc-text">字体</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%96%87%E6%9C%AC%E4%BF%AE%E9%A5%B0"><span class="toc-number">3.2.</span> <span class="toc-text">文本修饰</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%96%87%E6%9C%AC%E7%BC%A9%E8%BF%9B"><span class="toc-number">3.2.1.</span> <span class="toc-text">文本缩进</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%A1%8C%E9%97%B4%E8%B7%9D"><span class="toc-number">3.3.</span> <span class="toc-text">行间距</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%A4%8D%E5%90%88%E9%80%89%E6%8B%A9%E5%99%A8"><span class="toc-number">3.4.</span> <span class="toc-text">复合选择器</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%90%8E%E4%BB%A3%E9%80%89%E6%8B%A9%E5%99%A8"><span class="toc-number">3.4.1.</span> <span class="toc-text">后代选择器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%AD%90%E9%80%89%E6%8B%A9%E5%99%A8"><span class="toc-number">3.4.2.</span> <span class="toc-text">子选择器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%B9%B6%E9%9B%86%E9%80%89%E6%8B%A9%E5%99%A8"><span class="toc-number">3.4.3.</span> <span class="toc-text">并集选择器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E4%BC%AA%E7%B1%BB%E9%80%89%E6%8B%A9%E5%99%A8"><span class="toc-number">3.4.4.</span> <span class="toc-text">伪类选择器</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E9%93%BE%E6%8E%A5%E4%BC%AA%E7%B1%BB"><span class="toc-number">3.4.4.1.</span> <span class="toc-text">链接伪类</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#focus-%E7%84%A6%E7%82%B9%E9%80%89%E6%8B%A9%E5%99%A8"><span class="toc-number">3.4.4.2.</span> <span class="toc-text">focus 焦点选择器</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%83%8C%E6%99%AF%E5%9B%BE%E7%89%87"><span class="toc-number">3.4.5.</span> <span class="toc-text">背景图片</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%83%8C%E6%99%AF%E5%9B%BE%E7%89%87%E4%BD%8D%E7%BD%AE"><span class="toc-number">3.4.6.</span> <span class="toc-text">背景图片位置</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%83%8C%E6%99%AF%E5%A4%8D%E5%90%88%E5%86%99%E6%B3%95"><span class="toc-number">3.4.7.</span> <span class="toc-text">背景复合写法</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%83%8C%E6%99%AF%E8%89%B2%E5%8D%8A%E9%80%8F%E6%98%8E"><span class="toc-number">3.4.8.</span> <span class="toc-text">背景色半透明</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E4%BC%98%E5%85%88%E7%BA%A7"><span class="toc-number">3.4.9.</span> <span class="toc-text">优先级</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E6%9D%83%E9%87%8D%E5%8F%A0%E5%8A%A0"><span class="toc-number">3.4.9.1.</span> <span class="toc-text">权重叠加</span></a></li></ol></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E7%9B%92%E5%AD%90%E6%A8%A1%E5%9E%8B"><span class="toc-number">3.5.</span> <span class="toc-text">盒子模型</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E7%9B%92%E5%AD%90%E6%A8%A1%E5%9E%8B-1"><span class="toc-number">3.5.1.</span> <span class="toc-text">盒子模型</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E7%9B%92%E5%AD%90%E7%AE%80%E4%BB%8B"><span class="toc-number">3.5.1.1.</span> <span class="toc-text">盒子简介</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E7%9B%92%E5%AD%90%E7%BB%84%E6%88%90"><span class="toc-number">3.5.1.2.</span> <span class="toc-text">盒子组成</span></a><ol class="toc-child"><li class="toc-item toc-level-5"><a class="toc-link" href="#border-%E8%BE%B9%E6%A1%86"><span class="toc-number">3.5.1.2.1.</span> <span class="toc-text">border 边框</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#%E8%BE%B9%E6%A1%86%E5%88%86%E5%BC%80%E5%86%99%E6%B3%95%EF%BC%9A"><span class="toc-number">3.5.1.2.1.1.</span> <span class="toc-text">边框分开写法：</span></a></li></ol></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E5%86%85%E8%BE%B9%E8%B7%9D"><span class="toc-number">3.5.1.2.2.</span> <span class="toc-text">内边距</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E5%A4%96%E8%BE%B9%E8%B7%9D"><span class="toc-number">3.5.1.2.3.</span> <span class="toc-text">外边距</span></a></li></ol></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E6%B5%AE%E5%8A%A8%EF%BC%88float%EF%BC%89"><span class="toc-number">3.5.1.3.</span> <span class="toc-text">浮动（float）</span></a><ol class="toc-child"><li class="toc-item toc-level-5"><a class="toc-link" href="#%E4%BC%A0%E7%BB%9F%E7%BD%91%E9%A1%B5%E5%B8%83%E5%B1%80%E7%9A%84%E4%B8%89%E7%A7%8D%E6%96%B9%E5%BC%8F"><span class="toc-number">3.5.1.3.1.</span> <span class="toc-text">传统网页布局的三种方式</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E6%A0%87%E5%87%86%E6%B5%81"><span class="toc-number">3.5.1.3.2.</span> <span class="toc-text">标准流</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E6%B5%AE%E5%8A%A8"><span class="toc-number">3.5.1.3.3.</span> <span class="toc-text">为什么需要浮动</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E6%B5%AE%E5%8A%A8"><span class="toc-number">3.5.1.3.4.</span> <span class="toc-text">什么是浮动</span></a></li></ol></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%AE%9A%E4%BD%8D"><span class="toc-number">3.5.1.4.</span> <span class="toc-text">定位</span></a><ol class="toc-child"><li class="toc-item toc-level-5"><a class="toc-link" href="#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E5%AE%9A%E4%BD%8D"><span class="toc-number">3.5.1.4.1.</span> <span class="toc-text">为什么需要定位</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E5%AE%9A%E4%BD%8D%E7%BB%84%E6%88%90"><span class="toc-number">3.5.1.4.2.</span> <span class="toc-text">定位组成</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#%E5%AE%9A%E4%BD%8D%E6%A8%A1%E5%BC%8F"><span class="toc-number">3.5.1.4.2.1.</span> <span class="toc-text">定位模式</span></a></li><li class="toc-item toc-level-6"><a class="toc-link" href="#%E8%BE%B9%E5%81%8F%E7%A7%BB"><span class="toc-number">3.5.1.4.2.2.</span> <span class="toc-text">边偏移</span></a></li></ol></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E9%9D%99%E6%80%81%E5%AE%9A%E4%BD%8D"><span class="toc-number">3.5.1.4.3.</span> <span class="toc-text">静态定位</span></a></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E7%BB%9D%E5%AF%B9%E5%AE%9A%E4%BD%8D-absolute%EF%BC%88%E9%87%8D%E8%A6%81%EF%BC%89"><span class="toc-number">3.5.1.4.4.</span> <span class="toc-text">绝对定位 absolute（重要）</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#%E5%9B%BA%E5%AE%9A%E5%9C%A8%E7%89%88%E5%BF%83%E5%8F%B3%E4%BE%A7%E4%BD%8D%E7%BD%AE"><span class="toc-number">3.5.1.4.4.1.</span> <span class="toc-text">固定在版心右侧位置</span></a></li></ol></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E7%B2%98%E6%80%A7%E5%AE%9A%E4%BD%8D-sticky"><span class="toc-number">3.5.1.4.5.</span> <span class="toc-text">粘性定位 sticky</span></a><ol class="toc-child"><li class="toc-item toc-level-6"><a class="toc-link" href="#%E5%AE%9A%E4%BD%8D%E7%9A%84%E6%8B%93%E5%B1%95"><span class="toc-number">3.5.1.4.5.1.</span> <span class="toc-text">定位的拓展</span></a></li></ol></li><li class="toc-item toc-level-5"><a class="toc-link" href="#%E5%AE%9A%E4%BD%8D%E7%9A%84%E6%80%BB%E7%BB%93"><span class="toc-number">3.5.1.4.6.</span> <span class="toc-text">定位的总结</span></a></li></ol></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%9C%86%E8%A7%92%E8%BE%B9%E6%A1%86"><span class="toc-number">3.5.1.5.</span> <span class="toc-text">圆角边框</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E6%96%87%E5%AD%97%E9%98%B4%E5%BD%B1"><span class="toc-number">3.5.1.6.</span> <span class="toc-text">文字阴影</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#CSS-%E4%B8%89%E8%A7%92"><span class="toc-number">3.5.2.</span> <span class="toc-text">CSS 三角</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#CSS-%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2%E6%A0%B7%E5%BC%8F"><span class="toc-number">3.5.3.</span> <span class="toc-text">CSS 用户界面样式</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E6%9B%B4%E6%94%B9%E7%94%A8%E6%88%B7%E7%9A%84%E9%BC%A0%E6%A0%87%E6%A0%B7%E5%BC%8F"><span class="toc-number">3.5.3.1.</span> <span class="toc-text">更改用户的鼠标样式</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E9%98%B2%E6%AD%A2%E8%A1%A8%E5%8D%95%E5%9F%9F%E6%8B%96%E6%8B%BD"><span class="toc-number">3.5.3.2.</span> <span class="toc-text">防止表单域拖拽</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%BA%A2%E5%87%BA%E7%9A%84%E6%96%87%E5%AD%97%E7%9C%81%E7%95%A5%E5%8F%B7%E6%98%BE%E7%A4%BA"><span class="toc-number">3.5.4.</span> <span class="toc-text">溢出的文字省略号显示</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%8D%95%E8%A1%8C%E6%96%87%E6%9C%AC%E6%BA%A2%E5%87%BA%E6%98%BE%E7%A4%BA%E7%9C%81%E7%95%A5%E5%8F%B7"><span class="toc-number">3.5.4.1.</span> <span class="toc-text">单行文本溢出显示省略号</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#CSS-%E5%88%9D%E5%A7%8B%E5%8C%96"><span class="toc-number">3.5.5.</span> <span class="toc-text">CSS 初始化</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#Emmet-%E8%AF%AD%E6%B3%95"><span class="toc-number">4.</span> <span class="toc-text">Emmet 语法</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BB%8B%E7%BB%8D"><span class="toc-number">4.1.</span> <span class="toc-text">介绍</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%BF%AB%E9%80%9F%E7%94%9F%E6%88%90-HTML-%E7%BB%93%E6%9E%84%E8%AF%AD%E6%B3%95"><span class="toc-number">4.2.</span> <span class="toc-text">快速生成 HTML 结构语法</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%BF%AB%E9%80%9F%E7%94%9F%E6%88%90-Css-%E6%A0%B7%E5%BC%8F"><span class="toc-number">4.3.</span> <span class="toc-text">快速生成 Css 样式</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E8%87%AA%E5%8A%A8%E6%A0%BC%E5%BC%8F%E5%8C%96%E4%BB%A3%E7%A0%81"><span class="toc-number">5.</span> <span class="toc-text">自动格式化代码</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E7%BD%91%E9%A1%B5%E5%B8%83%E5%B1%80%E5%87%86%E5%88%99"><span class="toc-number">6.</span> <span class="toc-text">网页布局准则</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#CSS-%E5%B1%9E%E6%80%A7%E4%B9%A6%E5%86%99%E9%A1%BA%E5%BA%8F"><span class="toc-number">7.</span> <span class="toc-text">CSS 属性书写顺序</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E9%A1%B5%E9%9D%A2%E5%B8%83%E5%B1%80%E6%95%B4%E4%BD%93%E6%80%9D%E8%B7%AF"><span class="toc-number">8.</span> <span class="toc-text">页面布局整体思路</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%AF%BC%E8%88%AA%E6%A0%8F%E6%B3%A8%E6%84%8F%EF%BC%9A"><span class="toc-number">9.</span> <span class="toc-text">导航栏注意：</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#HTML5%E5%92%8C-CSS3-%E7%9A%84%E6%96%B0%E7%89%B9%E6%80%A7"><span class="toc-number">10.</span> <span class="toc-text">HTML5和 CSS3 的新特性</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#HTML5%E7%9A%84%E6%96%B0%E7%89%B9%E6%80%A7"><span class="toc-number">10.1.</span> <span class="toc-text">HTML5的新特性</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#HTML5-%E6%96%B0%E5%A2%9E%E7%9A%84%E8%AF%AD%E4%B9%89%E5%8C%96%E6%A0%87%E7%AD%BE"><span class="toc-number">10.1.1.</span> <span class="toc-text">HTML5 新增的语义化标签</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#HTML5-%E6%96%B0%E5%A2%9E%E7%9A%84%E5%A4%9A%E5%AA%92%E4%BD%93%E6%A0%87%E7%AD%BE"><span class="toc-number">10.1.2.</span> <span class="toc-text">HTML5 新增的多媒体标签</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E8%A7%86%E9%A2%91-lt-videl-gt"><span class="toc-number">10.1.2.1.</span> <span class="toc-text">视频&lt;videl&gt;</span></a></li></ol></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#CSS3-%E7%9A%84%E6%96%B0%E7%89%B9%E6%80%A7"><span class="toc-number">10.2.</span> <span class="toc-text">CSS3 的新特性</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%B1%9E%E6%80%A7%E9%80%89%E6%8B%A9%E5%99%A8"><span class="toc-number">10.2.1.</span> <span class="toc-text">属性选择器</span></a></li></ol></li></ol></li></ol></div></div></div></div></main><footer id="footer" style="background-image: url('https://s1.ax1x.com/2023/04/02/ppfbWQA.jpg')"><div id="footer-wrap"><div class="copyright">&copy;2022 - 2023 By 晚夜微雨问海棠</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="translateLink" type="button" title="简繁转换">繁</button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><button id="chat_btn" type="button" title="聊天"><i class="fas fa-sms"></i></button><a id="to_comment" href="#post-comment" title="直达评论"><i class="fas fa-comments"></i></a><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><span id="loading-status"></span><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="is-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span>  数据库加载中</span></div><div class="search-wrap"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div><hr/><div id="local-search-results"></div></div></div><div id="search-mask"></div></div><div id="rightMenu"><div class="rightMenu-group rightMenu-small"><div class="rightMenu-item" id="menu-backward"><i class="fa-solid fa-arrow-left"></i></div><div class="rightMenu-item" id="menu-forward"><i class="fa-solid fa-arrow-right"></i></div><div class="rightMenu-item" id="menu-refresh"><i class="fa-solid fa-arrow-rotate-right"></i></div><div class="rightMenu-item" id="menu-home"><i class="fa-solid fa-house"></i></div></div><div class="rightMenu-group rightMenu-line rightMenuOther"><a class="rightMenu-item menu-link" href="/archives/"><i class="fa-solid fa-archive"></i><span>文章归档</span></a><a class="rightMenu-item menu-link" href="/categories/"><i class="fa-solid fa-folder-open"></i><span>文章分类</span></a><a class="rightMenu-item menu-link" href="/tags/"><i class="fa-solid fa-tags"></i><span>文章标签</span></a></div><div class="rightMenu-group rightMenu-line rightMenuNormal"><div class="rightMenu-item" id="menu-translate"><i class="fa-solid fa-earth-asia"></i><span>繁简切换</span></div><div class="rightMenu-item" id="menu-darkmode"><i class="fa-solid fa-moon"></i><span>切换模式</span></div></div></div><div id="rightmenu-mask"></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="/js/tw_cn.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><script src="https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js"></script><script src="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js"></script><script src="/js/search/local-search.js"></script><script>var preloader = {
  endLoading: () => {
    document.body.style.overflow = 'auto';
    document.getElementById('loading-box').classList.add("loaded")
  },
  initLoading: () => {
    document.body.style.overflow = '';
    document.getElementById('loading-box').classList.remove("loaded")

  }
}
window.addEventListener('load',preloader.endLoading())</script><div class="js-pjax"><script>(() => {
  const $mermaidWrap = document.querySelectorAll('#article-container .mermaid-wrap')
  if ($mermaidWrap.length) {
    window.runMermaid = () => {
      window.loadMermaid = true
      const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default'

      Array.from($mermaidWrap).forEach((item, index) => {
        const mermaidSrc = item.firstElementChild
        const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n'
        const mermaidID = 'mermaid-' + index
        const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent
        mermaid.mermaidAPI.render(mermaidID, mermaidDefinition, (svgCode) => {
          mermaidSrc.insertAdjacentHTML('afterend', svgCode)
        })
      })
    }

    const loadMermaid = () => {
      window.loadMermaid ? runMermaid() : getScript('https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js').then(runMermaid)
    }

    window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid)
  }
})()</script><script>function loadValine () {
  function initValine () {
    const valine = new Valine(Object.assign({
      el: '#vcomment',
      appId: '',
      appKey: '',
      avatar: 'monsterid',
      serverURLs: '',
      emojiMaps: "",
      path: window.location.pathname,
      visitor: false
    }, null))
  }

  if (typeof Valine === 'function') initValine() 
  else getScript('https://cdn.jsdelivr.net/npm/valine/dist/Valine.min.js').then(initValine)
}

if ('Valine' === 'Valine' || !true) {
  if (true) btf.loadComment(document.getElementById('vcomment'),loadValine)
  else setTimeout(loadValine, 0)
} else {
  function loadOtherComment () {
    loadValine()
  }
}</script></div><div class="aplayer no-destroy" data-id="7625372994" data-server="netease" data-type="playlist" data-fixed="true" data-autoplay="true"> </div> <script defer src="https://npm.elemecdn.com/jquery@latest/dist/jquery.min.js"></script> <script src="/swiper/swiper.min.js"></script> <script src="/swiper/swiperindex.js"></script> <script src="//cdn.bootcss.com/pace/1.0.2/pace.min.js"></script> <script src="/js/title.js"></script> <script defer data-pjax src="/js/cat.js"></script> <script defer data-pjax src="/js/rightMenu.js"></script><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/activate-power-mode.min.js"></script><script>POWERMODE.colorful = true;
POWERMODE.shake = false;
POWERMODE.mobile = false;
document.body.addEventListener('input', POWERMODE);
</script><script id="click-heart" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/click-heart.min.js" async="async" mobile="false"></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/metingjs/dist/Meting.min.js"></script><script src="https://cdn.jsdelivr.net/npm/pjax/pjax.min.js"></script><script>let pjaxSelectors = ["head > title","#config-diff","#body-wrap","#rightside-config-hide","#rightside-config-show","#web_bg",".js-pjax"]

var pjax = new Pjax({
  elements: 'a:not([target="_blank"])',
  selectors: pjaxSelectors,
  cacheBust: false,
  analytics: false,
  scrollRestoration: false
})

document.addEventListener('pjax:send', function () {

  // removeEventListener scroll 
  window.tocScrollFn && window.removeEventListener('scroll', window.tocScrollFn)
  window.scrollCollect && window.removeEventListener('scroll', scrollCollect)

  typeof preloader === 'object' && preloader.initLoading()
  document.getElementById('rightside').style.cssText = "opacity: ''; transform: ''"
  
  if (window.aplayers) {
    for (let i = 0; i < window.aplayers.length; i++) {
      if (!window.aplayers[i].options.fixed) {
        window.aplayers[i].destroy()
      }
    }
  }

  typeof typed === 'object' && typed.destroy()

  //reset readmode
  const $bodyClassList = document.body.classList
  $bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode')

  typeof disqusjs === 'object' && disqusjs.destroy()
})

document.addEventListener('pjax:complete', function () {
  window.refreshFn()

  document.querySelectorAll('script[data-pjax]').forEach(item => {
    const newScript = document.createElement('script')
    const content = item.text || item.textContent || item.innerHTML || ""
    Array.from(item.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value))
    newScript.appendChild(document.createTextNode(content))
    item.parentNode.replaceChild(newScript, item)
  })

  GLOBAL_CONFIG.islazyload && window.lazyLoadInstance.update()

  typeof chatBtnFn === 'function' && chatBtnFn()
  typeof panguInit === 'function' && panguInit()

  // google analytics
  typeof gtag === 'function' && gtag('config', '', {'page_path': window.location.pathname});

  // baidu analytics
  typeof _hmt === 'object' && _hmt.push(['_trackPageview',window.location.pathname]);

  typeof loadMeting === 'function' && document.getElementsByClassName('aplayer').length && loadMeting()

  // prismjs
  typeof Prism === 'object' && Prism.highlightAll()

  typeof preloader === 'object' && preloader.endLoading()
})

document.addEventListener('pjax:error', (e) => {
  if (e.request.status === 404) {
    pjax.loadUrl('/404.html')
  }
})</script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div><!-- hexo injector body_end start --><script data-pjax>function history_calendar_injector_config(){
                var parent_div_git = document.getElementsByClassName('sticky_layout')[0];
                var item_html = '<div class="card-widget card-history"><div class="card-content"><div class="item-headline"><i class="fas fa-clock fa-spin"></i><span>那年今日</span></div><div id="history-baidu" style="height: 100px;overflow: hidden"><div class="history_swiper-container" id="history-container" style="width: 100%;height: 100%"><div class="swiper-wrapper" id="history_container_wrapper" style="height:20px"></div></div></div></div>';
                console.log('已挂载history_calendar')
                // parent_div_git.innerHTML=item_html+parent_div_git.innerHTML // 无报错，但不影响使用(支持pjax跳转)
                parent_div_git.insertAdjacentHTML("afterbegin",item_html) // 有报错，但不影响使用(支持pjax跳转)
            }if( document.getElementsByClassName('sticky_layout')[0] && (location.pathname ==='/'|| '/' ==='all')){

            history_calendar_injector_config()
        } </script><script data-pjax  src="https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.js"></script><script data-pjax src="https://cdn.jsdelivr.net/gh/Zfour/Butterfly-card-history/baiduhistory/js/main.js"></script><script data-pjax>
    function butterfly_categories_card_injector_config(){
      var parent_div_git = document.getElementById('recent-posts');
      var item_html = '<style>li.categoryBar-list-item{width:24%;}.categoryBar-list{max-height: 190px;overflow:auto;}.categoryBar-list::-webkit-scrollbar{width:0!important}@media screen and (max-width: 650px){.categoryBar-list{max-height: 160px;}}</style><div class="recent-post-item" style="height:auto;width:100%;padding:0px;"><div id="categoryBar"><ul class="categoryBar-list"><li class="categoryBar-list-item" style="background:url(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpicnew6.photophoto.cn%2F20120106%2Fhaimianbaobaotupian-10036689_1.jpg&amp;refer=http%3A%2F%2Fpicnew6.photophoto.cn&amp;app=2002&amp;size=f9999,10000&amp;q=a80&amp;n=0&amp;g=0n&amp;fmt=auto?sec=1665648815&amp;t=a3deb15ddd7a38597964c3a05e519bd7);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/Asp-Net/&quot;);" href="javascript:void(0);">Asp.Net</a><span class="categoryBar-list-count">1</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://npm.elemecdn.com/anzhiyu-blog@1.1.6/img/post/common/site-backgound.jpg);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/C-系列/&quot;);" href="javascript:void(0);">C#系列</a><span class="categoryBar-list-count">8</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_bt%2F0%2F13012860773%2F1000.jpg&amp;refer=http%3A%2F%2Finews.gtimg.com&amp;app=2002&amp;size=f9999,10000&amp;q=a80&amp;n=0&amp;g=0n&amp;fmt=auto?sec=1665648865&amp;t=1d2f13b52a7e279e8801545f59eda4e7);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/Hexo重装记录/&quot;);" href="javascript:void(0);">Hexo重装记录</a><span class="categoryBar-list-count">2</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fblog%2F202011%2F07%2F20201107183300_ac0c5.thumb.1000_0.jpeg&amp;refer=http%3A%2F%2Fc-ssl.duitang.com&amp;app=2002&amp;size=f9999,10000&amp;q=a80&amp;n=0&amp;g=0n&amp;fmt=auto?sec=1665648887&amp;t=3d32c6b12a4cf12e5cec3585b79c1fc3);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/EF/&quot;);" href="javascript:void(0);">EF</a><span class="categoryBar-list-count">1</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic%2F25%2Feb%2F1f%2F25eb1fd40b5a740c2b79e33f700806e5.jpg&amp;refer=http%3A%2F%2Fup.enterdesk.com&amp;app=2002&amp;size=f9999,10000&amp;q=a80&amp;n=0&amp;g=0n&amp;fmt=auto?sec=1665648908&amp;t=6425ee3bd166b0f5c5ffa6fb18b6937b);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/LOL/&quot;);" href="javascript:void(0);">LOL</a><span class="categoryBar-list-count">1</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Flmg.jj20.com%2Fup%2Fallimg%2Ftx26%2F36080017392073.jpg&amp;refer=http%3A%2F%2Flmg.jj20.com&amp;app=2002&amp;size=f9999,10000&amp;q=a80&amp;n=0&amp;g=0n&amp;fmt=auto?sec=1665650136&amp;t=5cc414d0ee58c9e285218d92f6a95513);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/idea/&quot;);" href="javascript:void(0);">idea</a><span class="categoryBar-list-count">1</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn10%2F320%2Fw700h420%2F20180907%2F5116-hitesuz6599636.jpg&amp;refer=http%3A%2F%2Fn.sinaimg.cn&amp;app=2002&amp;size=f9999,10000&amp;q=a80&amp;n=0&amp;g=0n&amp;fmt=auto?sec=1665650004&amp;t=6a304aa9cc7435ec1d148b8f99092bc0);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/世界/&quot;);" href="javascript:void(0);">世界</a><span class="categoryBar-list-count">1</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://s1.ax1x.com/2022/11/15/zAxCi6.jpg);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/世界见闻录/&quot;);" href="javascript:void(0);">世界见闻录</a><span class="categoryBar-list-count">8</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://s1.ax1x.com/2022/11/15/zAxFzD.jpg);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/前端体系/&quot;);" href="javascript:void(0);">前端体系</a><span class="categoryBar-list-count">19</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://s1.ax1x.com/2022/11/15/zAxnot.jpg);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/副业/&quot;);" href="javascript:void(0);">副业</a><span class="categoryBar-list-count">1</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://s1.ax1x.com/2022/11/15/zAxMJf.jpg);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/文案/&quot;);" href="javascript:void(0);">文案</a><span class="categoryBar-list-count">6</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://s1.ax1x.com/2022/11/15/zAxQW8.jpg);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/办公日常/&quot;);" href="javascript:void(0);">办公日常</a><span class="categoryBar-list-count">2</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://s1.ax1x.com/2022/11/15/zAx3Qg.jpg);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/朝花夕拾/&quot;);" href="javascript:void(0);">朝花夕拾</a><span class="categoryBar-list-count">12</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(https://s1.ax1x.com/2022/11/15/zAxYes.jpg);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/前端/&quot;);" href="javascript:void(0);">前端</a><span class="categoryBar-list-count">20</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(undefined);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/杂七杂八/&quot;);" href="javascript:void(0);">杂七杂八</a><span class="categoryBar-list-count">7</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(undefined);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/简书/&quot;);" href="javascript:void(0);">简书</a><span class="categoryBar-list-count">5</span><span class="categoryBar-list-descr"></span></li><li class="categoryBar-list-item" style="background:url(undefined);"> <a class="categoryBar-list-link" onclick="pjax.loadUrl(&quot;categories/游戏/&quot;);" href="javascript:void(0);">游戏</a><span class="categoryBar-list-count">1</span><span class="categoryBar-list-descr"></span></li></ul></div></div>';
      console.log('已挂载butterfly_categories_card')
      parent_div_git.insertAdjacentHTML("afterbegin",item_html)
      }
    if( document.getElementById('recent-posts') && (location.pathname ==='/'|| '/' ==='all')){
    butterfly_categories_card_injector_config()
    }
  </script><script data-pjax>
  function butterfly_clock_anzhiyu_injector_config(){
    var parent_div_git = document.getElementsByClassName('sticky_layout')[0];
    var item_html = '<div class="card-widget card-clock"><div class="card-glass"><div class="card-background"><div class="card-content"><div id="hexo_electric_clock"><img class="entered loading" id="card-clock-loading" src= "" data-lazy-src="https://cdn.cbd.int/hexo-butterfly-clock-anzhiyu/lib/loading.gif" style="height: 120px; width: 100%;" data-ll-status="loading"/></div></div></div></div></div>';
    console.log('已挂载butterfly_clock_anzhiyu')
    parent_div_git.insertAdjacentHTML("afterbegin",item_html)
    }
  var elist = 'null'.split(',');
  var cpage = location.pathname;
  var epage = '/';
  var qweather_key = '41ea442da35546559913a6a5d54163b2';
  var gaud_map_key = '6b62fbebf584b9a22a85bfccbf90335e';
  var baidu_ak_key = 'undefined';
  var flag = 0;
  var clock_rectangle = '114.35,34.79';
  var clock_default_rectangle_enable = 'true';

  for (var i=0;i<elist.length;i++){
    if (cpage.includes(elist[i])){
      flag++;
    }
  }

  if ((epage ==='all')&&(flag == 0)){
    butterfly_clock_anzhiyu_injector_config();
  }
  else if (epage === cpage){
    butterfly_clock_anzhiyu_injector_config();
  }
  </script><script src="https://widget.qweather.net/simple/static/js/he-simple-common.js?v=2.0"></script><script data-pjax src="https://cdn.cbd.int/hexo-butterfly-clock-anzhiyu/lib/clock.min.js"></script><script data-pjax>
  function butterfly_footer_beautify_injector_config(){
    var parent_div_git = document.getElementById('footer-wrap');
    var item_html = '<div id="workboard"></div><p id="ghbdages"><a class="github-badge" target="_blank" href="https://hexo.io/" style="margin-inline:5px" data-title="博客框架为Hexo_v5.4.0" title=""><img src= "" data-lazy-src="https://img.shields.io/badge/Frame-Hexo-blue?style=flat&amp;logo=hexo" alt=""/></a><a class="github-badge" target="_blank" href="https://butterfly.js.org/" style="margin-inline:5px" data-title="主题版本Butterfly_v4.2.2" title=""><img src= "" data-lazy-src="https://img.shields.io/badge/Theme-Butterfly-6513df?style=flat&amp;logo=bitdefender" alt=""/></a><a class="github-badge" target="_blank" href="https://www.jsdelivr.com/" style="margin-inline:5px" data-title="本站使用JsDelivr为静态资源提供CDN加速" title=""><img src= "" data-lazy-src="https://img.shields.io/badge/CDN-jsDelivr-orange?style=flat&amp;logo=jsDelivr" alt=""/></a><a class="github-badge" target="_blank" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" style="margin-inline:5px" data-title="本站采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可" title=""><img src= "" data-lazy-src="https://img.shields.io/badge/Copyright-BY--NC--SA%204.0-d42328?style=flat&amp;logo=Claris" alt=""/></a></p>';
    console.log('已挂载butterfly_footer_beautify')
    parent_div_git.insertAdjacentHTML("beforeend",item_html)
    }
  var elist = 'null'.split(',');
  var cpage = location.pathname;
  var epage = 'all';
  var flag = 0;

  for (var i=0;i<elist.length;i++){
    if (cpage.includes(elist[i])){
      flag++;
    }
  }

  if ((epage ==='all')&&(flag == 0)){
    butterfly_footer_beautify_injector_config();
  }
  else if (epage === cpage){
    butterfly_footer_beautify_injector_config();
  }
  </script><script async src="/js/runtime/runtime.min.js"></script><script data-pjax>
  function butterfly_swiper_injector_config(){
    var parent_div_git = document.getElementById('recent-posts');
    var item_html = '<div class="recent-post-item swiper_container_card" style="height: auto;width: 100%"><div id="random"><div id="random-banner"><canvas id="peoplecanvas"></canvas></div><a id="random-hover" style="width:100%;height:auto;" href="javascript:toRandomPost()" rel="external nofollow noreferrer" one-link-mark="yes"><i class="fa fa-paper-plane" style="margin-left:10px"></i><div style="margin-left:10px">随便逛逛<i class="fa-solid fa-arrow-right" style="margin-left:10px"></i></div></a></div><div class="blog-slider swiper-container-fade swiper-container-horizontal" id="swiper_container"><div class="blog-slider__wrp swiper-wrapper" style="transition-duration: 0ms;"><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/67fcd28d.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src= "" data-lazy-src="https://img2.baidu.com/it/u=4087346614,241521689&amp;fm=253&amp;fmt=auto&amp;app=138&amp;f=JPEG?w=500&amp;h=333" alt="" onerror="this.src=https://cdn.cbd.int/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2022-09-19</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/67fcd28d.html&quot;);" href="javascript:void(0);" alt="">学生人到职业人_心态篇</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/67fcd28d.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/8a73f76c.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src= "" data-lazy-src="https://s1.ax1x.com/2022/11/04/xLiBTA.jpg" alt="" onerror="this.src=https://cdn.cbd.int/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2022-11-04</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/8a73f76c.html&quot;);" href="javascript:void(0);" alt="">生活の奇思妙想☞2022</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/8a73f76c.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/14e5dae6.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src= "" data-lazy-src="https://s1.ax1x.com/2022/10/21/xcAQDH.jpg" alt="" onerror="this.src=https://cdn.cbd.int/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2022-11-12</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/14e5dae6.html&quot;);" href="javascript:void(0);" alt="">少年自负凌云笔</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/14e5dae6.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/9b7092b7.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src= "" data-lazy-src="https://s1.ax1x.com/2022/10/11/xNJbF0.jpg" alt="" onerror="this.src=https://cdn.cbd.int/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2022-09-13</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/9b7092b7.html&quot;);" href="javascript:void(0);" alt="">租房有感</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/9b7092b7.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/94bbc7d.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src= "" data-lazy-src="https://s1.ax1x.com/2022/10/11/xNJLWT.jpg" alt="" onerror="this.src=https://cdn.cbd.int/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2022-09-25</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/94bbc7d.html&quot;);" href="javascript:void(0);" alt="">谷歌收藏</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/94bbc7d.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms;"><a class="blog-slider__img" onclick="pjax.loadUrl(&quot;posts/3b350f14.html&quot;);" href="javascript:void(0);" alt=""><img width="48" height="48" src= "" data-lazy-src="https://s1.ax1x.com/2022/10/11/xNJJd1.jpg" alt="" onerror="this.src=https://cdn.cbd.int/akilar-candyassets/image/loading.gif; this.onerror = null;"/></a><div class="blog-slider__content"><span class="blog-slider__code">2022-09-13</span><a class="blog-slider__title" onclick="pjax.loadUrl(&quot;posts/3b350f14.html&quot;);" href="javascript:void(0);" alt="">阳光不燥、微风正好</a><div class="blog-slider__text">再怎么看我也不知道怎么描述它的啦！</div><a class="blog-slider__button" onclick="pjax.loadUrl(&quot;posts/3b350f14.html&quot;);" href="javascript:void(0);" alt="">详情       </a></div></div></div><div class="blog-slider__pagination swiper-pagination-clickable swiper-pagination-bullets"></div></div></div>';
    console.log('已挂载butterfly_swiper')
    parent_div_git.insertAdjacentHTML("afterbegin",item_html)
    }
  var elist = 'undefined'.split(',');
  var cpage = location.pathname;
  var epage = '/';
  var flag = 0;

  for (var i=0;i<elist.length;i++){
    if (cpage.includes(elist[i])){
      flag++;
    }
  }

  if ((epage ==='all')&&(flag == 0)){
    butterfly_swiper_injector_config();
  }
  else if (epage === cpage){
    butterfly_swiper_injector_config();
  }
  </script><script defer src="https://npm.elemecdn.com/anzhiyu-blog@1.1.6/js/swiper.min.js"></script><script defer data-pjax src="https://cdn.cbd.int/hexo-butterfly-swiper-anzhiyu@1.0.4/lib/swiper_init.js"></script><script data-pjax src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/gsap/3.9.1/gsap.min.js"></script><script defer src="https://npm.elemecdn.com/hexo-butterfly-swiper-anzhiyu@1.0.4/lib/people.min.js"></script><script async src="/anzhiyu/random.js"></script><div class="js-pjax"><script async="async">var arr = document.getElementsByClassName('recent-post-item');
for(var i = 0;i<arr.length;i++){
    arr[i].classList.add('wow');
    arr[i].classList.add('animate__zoomIn');
    arr[i].setAttribute('data-wow-duration', '1.5s');
    arr[i].setAttribute('data-wow-delay', '200ms');
    arr[i].setAttribute('data-wow-offset', '30');
    arr[i].setAttribute('data-wow-iteration', '1');
  }</script><script async="async">var arr = document.getElementsByClassName('card-widget');
for(var i = 0;i<arr.length;i++){
    arr[i].classList.add('wow');
    arr[i].classList.add('animate__zoomIn');
    arr[i].setAttribute('data-wow-duration', '');
    arr[i].setAttribute('data-wow-delay', '200ms');
    arr[i].setAttribute('data-wow-offset', '');
    arr[i].setAttribute('data-wow-iteration', '');
  }</script><script async="async">var arr = document.getElementsByClassName('flink-list-card');
for(var i = 0;i<arr.length;i++){
    arr[i].classList.add('wow');
    arr[i].classList.add('animate__flipInY');
    arr[i].setAttribute('data-wow-duration', '3s');
    arr[i].setAttribute('data-wow-delay', '');
    arr[i].setAttribute('data-wow-offset', '');
    arr[i].setAttribute('data-wow-iteration', '');
  }</script><script async="async">var arr = document.getElementsByClassName('flink-list-card');
for(var i = 0;i<arr.length;i++){
    arr[i].classList.add('wow');
    arr[i].classList.add('animate__animated');
    arr[i].setAttribute('data-wow-duration', '3s');
    arr[i].setAttribute('data-wow-delay', '');
    arr[i].setAttribute('data-wow-offset', '');
    arr[i].setAttribute('data-wow-iteration', '');
  }</script><script async="async">var arr = document.getElementsByClassName('article-sort-item');
for(var i = 0;i<arr.length;i++){
    arr[i].classList.add('wow');
    arr[i].classList.add('animate__slideInRight');
    arr[i].setAttribute('data-wow-duration', '1.5s');
    arr[i].setAttribute('data-wow-delay', '');
    arr[i].setAttribute('data-wow-offset', '');
    arr[i].setAttribute('data-wow-iteration', '');
  }</script><script async="async">var arr = document.getElementsByClassName('site-card');
for(var i = 0;i<arr.length;i++){
    arr[i].classList.add('wow');
    arr[i].classList.add('animate__flipInY');
    arr[i].setAttribute('data-wow-duration', '3s');
    arr[i].setAttribute('data-wow-delay', '');
    arr[i].setAttribute('data-wow-offset', '');
    arr[i].setAttribute('data-wow-iteration', '');
  }</script><script async="async">var arr = document.getElementsByClassName('site-card');
for(var i = 0;i<arr.length;i++){
    arr[i].classList.add('wow');
    arr[i].classList.add('animate__animated');
    arr[i].setAttribute('data-wow-duration', '3s');
    arr[i].setAttribute('data-wow-delay', '');
    arr[i].setAttribute('data-wow-offset', '');
    arr[i].setAttribute('data-wow-iteration', '');
  }</script></div><script defer src="https://cdn.cbd.int/hexo-butterfly-wowjs/lib/wow.min.js"></script><script defer src="https://cdn.cbd.int/hexo-butterfly-wowjs/lib/wow_init.js"></script><script async src="/js/ali_font.js"></script><!-- hexo injector body_end end --><script src="/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"tagMode":false,"debug":false,"model":{"jsonPath":"/live2dw/assets/koharu.model.json"},"display":{"position":"left","width":150,"height":300},"mobile":{"show":false},"log":false,"pluginJsPath":"lib/","pluginModelPath":"assets/","pluginRootPath":"live2dw/"});</script></body></html>